From 9ffab6a9e52adf1927a8298ff98fd38e9ae2e829 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 25 Oct 2021 01:06:24 +0300 Subject: [PATCH 01/19] Impove nearest operation portable polyfill (#2105) --- std/portable/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/std/portable/index.js b/std/portable/index.js index d027d8d967..2400d61746 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -136,12 +136,12 @@ if (typeof globalScope.ASC_TARGET === "undefined") { globalScope["floor"] = Math.floor; - // Adopt code from https://github.com/rfk/wasm-polyfill globalScope["nearest"] = function nearest(value) { - if (Math.abs(value - Math.trunc(value)) === 0.5) { - return 2.0 * Math.round(value * 0.5); - } - return Math.round(value); + const INV_EPS64 = 4503599627370496.0; + const y = Math.abs(value); + return y < INV_EPS64 + ? Math.abs(y + INV_EPS64 - INV_EPS64) * Math.sign(value) + : value; }; globalScope["select"] = function select(ifTrue, ifFalse, condition) { From 87cf3e85ced590ccbdb406d5005b3c5d0c7db8ce Mon Sep 17 00:00:00 2001 From: Max Graey Date: Wed, 27 Oct 2021 14:28:43 +0300 Subject: [PATCH 02/19] remove experimental bigint v8 flags (#2076) --- .github/workflows/test.yml | 2 +- tests/compiler.js | 2 -- tests/features.json | 7 ++----- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 08ef13e467..649ae45cb5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -123,7 +123,7 @@ jobs: run: npm run clean - name: Test experimental features env: - ASC_FEATURES: mutable-globals,threads,reference-types,bigint-integration,gc + ASC_FEATURES: threads,reference-types,bigint-integration,gc run: | npm run test:compiler rt/flags features/js-bigint-integration features/reference-types features/threads std-wasi/process std-wasi/crypto test-runtimes: diff --git a/tests/compiler.js b/tests/compiler.js index b641f3954c..affd483713 100644 --- a/tests/compiler.js +++ b/tests/compiler.js @@ -342,7 +342,6 @@ function runTest(basename) { } let rtracedBuffer = stdout.toBuffer(); const instantiateRtrace = section("instantiate rtrace"); - v8.setFlagsFromString("--experimental-wasm-bigint"); if (!testInstantiate(basename, rtracedBuffer, glue, stderr, config.asc_wasi)) { failed = true; failedTests.add(basename); @@ -350,7 +349,6 @@ function runTest(basename) { } else { instantiateRtrace.end(SUCCESS); } - v8.setFlagsFromString("--no-experimental-wasm-bigint"); }); }); if (failed) return 1; diff --git a/tests/features.json b/tests/features.json index 92adbebdef..07322b22df 100644 --- a/tests/features.json +++ b/tests/features.json @@ -1,6 +1,8 @@ { "mutable-globals": { }, + "bigint-integration": { + }, "nontrapping-f2i": { "asc_flags": [ "--enable nontrapping-f2i" @@ -40,11 +42,6 @@ "--experimental-wasm-gc" ] }, - "bigint-integration": { - "v8_flags": [ - "--experimental-wasm-bigint" - ] - }, "exception-handling": { "asc_flags": [ "--enable exception-handling" From 0520fcb2658541b95816597fc015fa933c7e8879 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Sat, 30 Oct 2021 14:18:05 +0300 Subject: [PATCH 03/19] Update binaryen & other deps (#2057) --- package-lock.json | 567 +- package.json | 21 +- src/glue/binaryen.d.ts | 26 + src/module.ts | 119 +- std/assembly/util/string.ts | 3 +- std/assembly/util/uri.ts | 3 +- tests/compiler/NonNullable.optimized.wat | 31 +- tests/compiler/assert-nonnull.optimized.wat | 116 +- tests/compiler/binary.optimized.wat | 12 +- tests/compiler/builtins.optimized.wat | 31 +- tests/compiler/call-super.optimized.wat | 1445 +- tests/compiler/class-implements.optimized.wat | 486 +- .../class-overloading-cast.optimized.wat | 543 +- .../compiler/class-overloading.optimized.wat | 728 +- tests/compiler/class.optimized.wat | 759 +- tests/compiler/constructor.optimized.wat | 755 +- tests/compiler/do.optimized.wat | 1018 +- .../empty-exportruntime.optimized.wat | 447 +- tests/compiler/empty-new.optimized.wat | 475 +- tests/compiler/exports.optimized.wat | 503 +- .../exportstar-rereexport.optimized.wat | 755 +- .../extends-baseaggregate.optimized.wat | 1371 +- .../compiler/extends-recursive.optimized.wat | 357 +- tests/compiler/features/gc.optimized.wat | 8 +- .../features/nontrapping-f2i.optimized.wat | 8 +- tests/compiler/features/simd.optimized.wat | 343 +- .../field-initialization.optimized.wat | 841 +- tests/compiler/field.optimized.wat | 1470 +- tests/compiler/for.optimized.wat | 993 +- tests/compiler/function-call.optimized.wat | 507 +- .../function-expression.optimized.wat | 975 +- tests/compiler/function-types.optimized.wat | 18 +- tests/compiler/getter-call.optimized.wat | 883 +- tests/compiler/heap.optimized.wat | 545 +- .../implicit-getter-setter.optimized.wat | 371 +- tests/compiler/infer-array.optimized.wat | 1170 +- tests/compiler/infer-generic.optimized.wat | 1063 +- tests/compiler/inlining.optimized.wat | 959 +- tests/compiler/instanceof-class.optimized.wat | 557 +- tests/compiler/issues/1095.optimized.wat | 1011 +- tests/compiler/issues/1225.optimized.wat | 544 +- tests/compiler/issues/1699.optimized.wat | 1461 +- tests/compiler/logical.optimized.wat | 497 +- tests/compiler/loop-flow.optimized.wat | 18 +- tests/compiler/managed-cast.optimized.wat | 560 +- tests/compiler/memcpy.optimized.wat | 224 +- tests/compiler/memmove.optimized.wat | 251 +- tests/compiler/memset.optimized.wat | 219 +- tests/compiler/new.optimized.wat | 485 +- tests/compiler/number.optimized.wat | 1275 +- tests/compiler/object-literal.optimized.wat | 1583 +- .../optional-typeparameters.optimized.wat | 491 +- tests/compiler/reexport.optimized.wat | 497 +- tests/compiler/rereexport.optimized.wat | 527 +- tests/compiler/resolve-access.optimized.wat | 1519 +- tests/compiler/resolve-binary.optimized.wat | 1263 +- .../resolve-elementaccess.optimized.wat | 1246 +- .../resolve-function-expression.optimized.wat | 796 +- tests/compiler/resolve-nested.optimized.wat | 489 +- tests/compiler/resolve-new.optimized.wat | 499 +- .../resolve-propertyaccess.optimized.wat | 788 +- tests/compiler/resolve-ternary.optimized.wat | 1140 +- tests/compiler/resolve-unary.optimized.wat | 837 +- tests/compiler/return.optimized.wat | 4 + tests/compiler/rt/finalize.optimized.wat | 497 +- tests/compiler/rt/instanceof.optimized.wat | 485 +- .../runtime-incremental-export.optimized.wat | 447 +- .../rt/runtime-minimal-export.optimized.wat | 383 +- .../rt/runtime-stub-export.optimized.wat | 35 +- tests/compiler/scoped.optimized.wat | 8 +- tests/compiler/std-wasi/console.optimized.wat | 2709 +- tests/compiler/std-wasi/crypto.optimized.wat | 1525 +- tests/compiler/std-wasi/process.optimized.wat | 1642 +- tests/compiler/std/array-access.optimized.wat | 97 +- .../compiler/std/array-literal.optimized.wat | 630 +- tests/compiler/std/array.optimized.wat | 12238 ++++--- tests/compiler/std/arraybuffer.optimized.wat | 959 +- tests/compiler/std/dataview.optimized.wat | 1018 +- tests/compiler/std/date.optimized.wat | 2670 +- tests/compiler/std/date.untouched.wat | 19 +- tests/compiler/std/map.optimized.wat | 14595 ++++---- tests/compiler/std/math.optimized.wat | 6995 ++-- tests/compiler/std/mod.optimized.wat | 417 +- tests/compiler/std/new.optimized.wat | 525 +- tests/compiler/std/object.optimized.wat | 31 +- .../std/operator-overloading.optimized.wat | 647 +- tests/compiler/std/pointer.optimized.wat | 330 +- tests/compiler/std/set.optimized.wat | 10004 +++--- tests/compiler/std/static-array.optimized.wat | 680 +- tests/compiler/std/staticarray.optimized.wat | 2912 +- .../std/string-casemapping.optimized.wat | 2279 +- .../std/string-encoding.optimized.wat | 1700 +- tests/compiler/std/string.optimized.wat | 4763 ++- tests/compiler/std/string.untouched.wat | 19 +- tests/compiler/std/symbol.optimized.wat | 1527 +- tests/compiler/std/typedarray.optimized.wat | 29849 ++++++++-------- tests/compiler/std/uri.optimized.wat | 1244 +- tests/compiler/std/uri.untouched.wat | 38 +- tests/compiler/super-inline.optimized.wat | 485 +- tests/compiler/templateliteral.optimized.wat | 2186 +- tests/compiler/throw.optimized.wat | 671 +- tests/compiler/typeof.optimized.wat | 568 +- tests/compiler/unary.optimized.wat | 14 +- tests/compiler/wasi/abort.optimized.wat | 160 +- tests/compiler/wasi/seed.optimized.wat | 22 +- tests/compiler/wasi/trace.optimized.wat | 1408 +- tests/compiler/while.optimized.wat | 1113 +- 107 files changed, 73797 insertions(+), 76253 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64d0e088a2..6479c46374 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "101.0.0-nightly.20210904", + "binaryen": "102.0.0-nightly.20211028", "long": "^4.0.0", - "source-map-support": "^0.5.19", + "source-map-support": "^0.5.20", "ts-node": "^6.2.0" }, "bin": { @@ -19,18 +19,17 @@ "asinit": "bin/asinit" }, "devDependencies": { - "@types/node": "^15.6.1", - "@typescript-eslint/eslint-plugin": "^4.9.1", - "@typescript-eslint/parser": "^4.9.1", + "@types/node": "^16.11.4", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", "diff": "^5.0.0", - "eslint": "^7.15.0", - "glob": "^7.1.6", + "eslint": "^7.32.0", + "glob": "^7.2.0", "physical-cpu-count": "^2.0.0", - "source-map-support": "^0.5.19", - "ts-loader": "^9.2.2", + "ts-loader": "^9.2.6", "ts-node": "^6.2.0", - "typescript": "~4.2.4", - "webpack": "^5.59.1", + "typescript": "^4.4.4", + "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, "funding": { @@ -145,15 +144,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -164,37 +163,33 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.10.0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -202,21 +197,21 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -256,25 +251,25 @@ "dev": true }, "node_modules/@types/node": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", - "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "version": "16.11.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", + "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -293,18 +288,27 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz", - "integrity": "sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -317,16 +321,34 @@ "eslint": "*" } }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.25.0.tgz", - "integrity": "sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -345,13 +367,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz", - "integrity": "sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -362,9 +384,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.25.0.tgz", - "integrity": "sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -375,18 +397,18 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz", - "integrity": "sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -402,12 +424,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz", - "integrity": "sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", + "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -625,9 +647,9 @@ } }, "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -668,9 +690,9 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -734,9 +756,9 @@ "dev": true }, "node_modules/binaryen": { - "version": "101.0.0-nightly.20210904", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210904.tgz", - "integrity": "sha512-2AvJhErttuoMvgNcYPPpPy7C12PSvDdtZWtEeX/Otm/Vtf4ePvBpT3UIA00hGAh8HNaGr+dzFNstxTUvjNwZTg==", + "version": "102.0.0-nightly.20211028", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", + "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==", "bin": { "wasm-opt": "bin/wasm-opt" } @@ -789,8 +811,7 @@ "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "node_modules/callsites": { "version": "3.1.0", @@ -1033,13 +1054,14 @@ } }, "node_modules/eslint": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.27.0.tgz", - "integrity": "sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1056,7 +1078,7 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -1269,17 +1291,16 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" }, "engines": { "node": ">=8" @@ -1304,9 +1325,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -1399,9 +1420,9 @@ } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1452,9 +1473,9 @@ } }, "node_modules/globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "dependencies": { "array-union": "^2.1.0", @@ -1787,12 +1808,6 @@ "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -2445,7 +2460,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2454,7 +2468,6 @@ "version": "0.5.20", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2653,9 +2666,9 @@ } }, "node_modules/ts-loader": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.2.tgz", - "integrity": "sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==", + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -2748,9 +2761,9 @@ } }, "node_modules/typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -2789,9 +2802,9 @@ } }, "node_modules/webpack": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", - "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", + "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -3092,62 +3105,62 @@ "dev": true }, "@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } } }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -3184,91 +3197,110 @@ "dev": true }, "@types/node": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", - "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "version": "16.11.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", + "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } } }, "@typescript-eslint/experimental-utils": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz", - "integrity": "sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } } }, "@typescript-eslint/parser": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.25.0.tgz", - "integrity": "sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz", - "integrity": "sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" } }, "@typescript-eslint/types": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.25.0.tgz", - "integrity": "sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz", - "integrity": "sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" } }, "@typescript-eslint/visitor-keys": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz", - "integrity": "sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", + "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -3460,9 +3492,9 @@ "dev": true }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, @@ -3492,9 +3524,9 @@ "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -3540,9 +3572,9 @@ "dev": true }, "binaryen": { - "version": "101.0.0-nightly.20210904", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210904.tgz", - "integrity": "sha512-2AvJhErttuoMvgNcYPPpPy7C12PSvDdtZWtEeX/Otm/Vtf4ePvBpT3UIA00hGAh8HNaGr+dzFNstxTUvjNwZTg==" + "version": "102.0.0-nightly.20211028", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", + "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==" }, "brace-expansion": { "version": "1.1.11", @@ -3579,8 +3611,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "callsites": { "version": "3.1.0", @@ -3760,13 +3791,14 @@ "dev": true }, "eslint": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.27.0.tgz", - "integrity": "sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3783,7 +3815,7 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -3940,17 +3972,16 @@ "dev": true }, "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" } }, "fast-json-stable-stringify": { @@ -3972,9 +4003,9 @@ "dev": true }, "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -4049,9 +4080,9 @@ "dev": true }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4087,9 +4118,9 @@ } }, "globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -4339,12 +4370,6 @@ "p-locate": "^4.1.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -4806,14 +4831,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.20", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -4955,9 +4978,9 @@ } }, "ts-loader": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.2.tgz", - "integrity": "sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==", + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -5021,9 +5044,9 @@ "dev": true }, "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true }, "uri-js": { @@ -5052,9 +5075,9 @@ } }, "webpack": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", - "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", + "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", diff --git a/package.json b/package.json index e1116c66ea..112fbd3112 100644 --- a/package.json +++ b/package.json @@ -21,24 +21,23 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "101.0.0-nightly.20210904", + "binaryen": "102.0.0-nightly.20211028", "long": "^4.0.0", - "source-map-support": "^0.5.19", + "source-map-support": "^0.5.20", "ts-node": "^6.2.0" }, "devDependencies": { - "@types/node": "^15.6.1", - "@typescript-eslint/eslint-plugin": "^4.9.1", - "@typescript-eslint/parser": "^4.9.1", + "@types/node": "^16.11.4", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", "diff": "^5.0.0", - "eslint": "^7.15.0", - "glob": "^7.1.6", + "eslint": "^7.32.0", + "glob": "^7.2.0", "physical-cpu-count": "^2.0.0", - "source-map-support": "^0.5.19", - "ts-loader": "^9.2.2", + "ts-loader": "^9.2.6", "ts-node": "^6.2.0", - "typescript": "~4.2.4", - "webpack": "^5.59.1", + "typescript": "^4.4.4", + "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, "type": "commonjs", diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 5763561632..45adb16939 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -410,6 +410,32 @@ export declare function _BinaryenRefEqSetLeft(expr: ExpressionRef, leftExpr: Exp export declare function _BinaryenRefEqGetRight(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenRefEqSetRight(expr: ExpressionRef, rightExpr: ExpressionRef): void; +export declare function _BinaryenTableGet(module: ModuleRef, name: StringRef, index: ExpressionRef, type: TypeRef): ExpressionRef; +export declare function _BinaryenTableGetGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableGetSetTable(expr: ExpressionRef, table: StringRef): void; +export declare function _BinaryenTableGetGetIndex(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGetSetIndex(expr: ExpressionRef, index: ExpressionRef): void; + +export declare function _BinaryenTableSet(module: ModuleRef, name: StringRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableSetGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableSetSetTable(expr: ExpressionRef, table: StringRef): void; +export declare function _BinaryenTableSetGetIndex(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableSetSetIndex(expr: ExpressionRef, index: ExpressionRef): void; +export declare function _BinaryenTableSetGetValue(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableSetSetValue(expr: ExpressionRef, value: ExpressionRef): void; + +export declare function _BinaryenTableSize(module: ModuleRef, name: StringRef): ExpressionRef; +export declare function _BinaryenTableSizeGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableSizeSetTable(expr: ExpressionRef, table: StringRef): void; + +export declare function _BinaryenTableGrow(module: ModuleRef, name: StringRef, value: ExpressionRef, delta: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGrowGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableGrowSetTable(expr: ExpressionRef, table: StringRef): void; +export declare function _BinaryenTableGrowGetValue(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGrowSetValue(expr: ExpressionRef, value: ExpressionRef): void; +export declare function _BinaryenTableGrowGetDelta(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGrowSetDelta(expr: ExpressionRef, delta: ExpressionRef): void; + export declare function _BinaryenTry(module: ModuleRef, name: StringRef, bodyExpr: ExpressionRef, catchTags: ArrayRef, numCatchTags: Index, catchBodies: ArrayRef, numCatchBodies: Index, delegateTarget: StringRef): ExpressionRef; export declare function _BinaryenTryGetName(expr: ExpressionRef): StringRef; export declare function _BinaryenTrySetName(expr: ExpressionRef, name: StringRef): void; diff --git a/src/module.ts b/src/module.ts index 4c1c379f9c..f4ab962eb4 100644 --- a/src/module.ts +++ b/src/module.ts @@ -76,7 +76,8 @@ export enum FeatureFlags { GC = 1024 /* _BinaryenFeatureGC */, Memory64 = 2048 /* _BinaryenFeatureMemory64 */, TypedFunctionReferences = 4096 /* _BinaryenFeatureTypedFunctionReferences */, - All = 16383 /* _BinaryenFeatureAll */ + RelaxedSIMD = 16384 /* _BinaryenFeatureRelaxedSIMD */, + All = 32767 /* _BinaryenFeatureAll */ } /** Binaryen expression id constants. */ @@ -126,28 +127,33 @@ export enum ExpressionId { RefIs = 42 /* _BinaryenRefIsId */, RefFunc = 43 /* _BinaryenRefFuncId */, RefEq = 44 /* _BinaryenRefEqId */, - Try = 45 /* _BinaryenTryId */, - Throw = 46 /* _BinaryenThrowId */, - Rethrow = 47 /* _BinaryenRethrowId */, - TupleMake = 48 /* _BinaryenTupleMakeId */, - TupleExtract = 49 /* _BinaryenTupleExtractId */, - I31New = 50 /* _BinaryenI31NewId */, - I31Get = 51 /* _BinaryenI31GetId */, - CallRef = 52 /* _BinaryenCallRefId */, - RefTest = 53 /* _BinaryenRefTestId */, - RefCast = 54 /* _BinaryenRefCastId */, - BrOn = 55 /* _BinaryenBrOnId */, - RttCanon = 56 /* _BinaryenRttCanonId */, - RttSub = 57 /* _BinaryenRttSubId */, - StructNew = 58 /* _BinaryenStructNewId */, - StructGet = 59 /* _BinaryenStructGetId */, - StructSet = 60 /* _BinaryenStructSetId */, - ArrayNew = 61 /* _BinaryenArrayNewId */, - ArrayGet = 62 /* _BinaryenArrayGetId */, - ArraySet = 63 /* _BinaryenArraySetId */, - ArrayLen = 64 /* _BinaryenArrayLenId */, - ArrayCopy = 65 /* _BinaryenArrayCopyId */, - RefAs = 66 /* _BinaryenRefAsId */ + TableGet = 45 /* _BinaryenTableGetId */, + TableSet = 46 /* _BinaryenTableSetId */, + TableSize = 47 /* _BinaryenTableSizeId */, + TableGrow = 48 /* _BinaryenTableGrowId */, + Try = 49 /* _BinaryenTryId */, + Throw = 50 /* _BinaryenThrowId */, + Rethrow = 51 /* _BinaryenRethrowId */, + TupleMake = 52 /* _BinaryenTupleMakeId */, + TupleExtract = 53 /* _BinaryenTupleExtractId */, + I31New = 54 /* _BinaryenI31NewId */, + I31Get = 55 /* _BinaryenI31GetId */, + CallRef = 56 /* _BinaryenCallRefId */, + RefTest = 57 /* _BinaryenRefTestId */, + RefCast = 58 /* _BinaryenRefCastId */, + BrOn = 59 /* _BinaryenBrOnId */, + RttCanon = 60 /* _BinaryenRttCanonId */, + RttSub = 61 /* _BinaryenRttSubId */, + StructNew = 62 /* _BinaryenStructNewId */, + StructGet = 63 /* _BinaryenStructGetId */, + StructSet = 64 /* _BinaryenStructSetId */, + ArrayNew = 65 /* _BinaryenArrayNewId */, + ArrayInit = 66 /* _BinaryenArrayInitId */, + ArrayGet = 67 /* _BinaryenArrayGetId */, + ArraySet = 68 /* _BinaryenArraySetId */, + ArrayLen = 69 /* _BinaryenArrayLenId */, + ArrayCopy = 70 /* _BinaryenArrayCopyId */, + RefAs = 71 /* _BinaryenRefAsId */ } /** Binaryen external kind constants. */ @@ -1239,6 +1245,16 @@ export class Module { return binaryen._BinaryenMemoryGrow(this.ref, delta); } + table_size(name: string): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableSize(this.ref, cStr); + } + + table_grow(name: string, delta: ExpressionRef, value: ExpressionRef = 0): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableGrow(this.ref, cStr, value, delta); + } + local_get( index: i32, type: TypeRef @@ -1276,6 +1292,15 @@ export class Module { return binaryen._BinaryenGlobalGet(this.ref, cStr, type); } + table_get( + name: string, + index: ExpressionRef, + type: TypeRef + ): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableGet(this.ref, cStr, index, type); + } + load( bytes: Index, signed: bool, @@ -1380,6 +1405,15 @@ export class Module { return binaryen._BinaryenGlobalSet(this.ref, cStr, value); } + table_set( + name: string, + index: ExpressionRef, + value: ExpressionRef + ): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableSet(this.ref, cStr, index, value); + } + block( label: string | null, children: ExpressionRef[], @@ -2267,6 +2301,7 @@ export class Module { passes.push("local-cse"); passes.push("remove-unused-brs"); passes.push("remove-unused-names"); + passes.push("merge-blocks"); passes.push("precompute-propagate"); } if (optimizeLevel >= 3) { @@ -2274,6 +2309,7 @@ export class Module { passes.push("flatten"); passes.push("vacuum"); passes.push("simplify-locals-notee-nostructure"); + passes.push("vacuum"); passes.push("licm"); passes.push("merge-locals"); passes.push("reorder-locals"); @@ -2295,6 +2331,7 @@ export class Module { if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("pick-load-signs"); passes.push("simplify-globals-optimizing"); + passes.push("simplify-globals-optimizing"); } passes.push("simplify-locals-notee-nostructure"); passes.push("vacuum"); @@ -2307,25 +2344,24 @@ export class Module { passes.push("coalesce-locals"); passes.push("reorder-locals"); passes.push("vacuum"); - + if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("rse"); + passes.push("vacuum"); + } if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("merge-locals"); + passes.push("vacuum"); } - passes.push("vacuum"); if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("simplify-globals-optimizing"); + passes.push("simplify-globals-optimizing"); } - passes.push("merge-blocks"); passes.push("remove-unused-brs"); passes.push("remove-unused-names"); passes.push("merge-blocks"); if (optimizeLevel >= 3) { passes.push("optimize-instructions"); } - if (optimizeLevel >= 2 || shrinkLevel >= 1) { - passes.push("rse"); - passes.push("vacuum"); - } // --- PassRunner::addDefaultGlobalOptimizationPostPasses --- @@ -2353,8 +2389,10 @@ export class Module { if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("code-folding"); } - if (optimizeLevel > 1 && (this.getFeatures() & FeatureFlags.GC) != 0) { + if (optimizeLevel >= 2 && (this.getFeatures() & FeatureFlags.GC) != 0) { passes.push("heap2local"); + passes.push("merge-locals"); + passes.push("local-subtyping"); } // precompute works best after global optimizations if (optimizeLevel >= 2 || shrinkLevel >= 1) { @@ -2367,6 +2405,7 @@ export class Module { passes.push("dae-optimizing"); // reduce arity passes.push("inlining-optimizing"); // and inline if possible if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("ssa-nomerge"); passes.push("rse"); // move code on early return (after CFG cleanup) passes.push("code-pushing"); @@ -2390,8 +2429,10 @@ export class Module { passes.push("inlining"); passes.push("precompute-propagate"); + passes.push("rse"); passes.push("vacuum"); - + passes.push("ssa-nomerge"); + passes.push("simplify-locals"); passes.push("coalesce-locals"); } passes.push("remove-unused-brs"); @@ -2963,12 +3004,14 @@ export enum SideEffects { WritesGlobal = 32 /* _BinaryenSideEffectWritesGlobal */, ReadsMemory = 64 /* _BinaryenSideEffectReadsMemory */, WritesMemory = 128 /* _BinaryenSideEffectWritesMemory */, - ImplicitTrap = 256 /* _BinaryenSideEffectImplicitTrap */, - IsAtomic = 512 /* _BinaryenSideEffectIsAtomic */, - Throws = 1024 /* _BinaryenSideEffectThrows */, - DanglingPop = 2048 /* _BinaryenSideEffectDanglingPop */, - TrapsNeverHappen = 4096 /* _BinaryenSideEffectTrapsNeverHappen */, - Any = 8191 /* _BinaryenSideEffectAny */ + ReadsTable = 256 /* _BinaryenSideEffectReadsTable */, + WritesTable = 512 /* _BinaryenSideEffectWritesTable */, + ImplicitTrap = 1024 /* _BinaryenSideEffectImplicitTrap */, + IsAtomic = 2048 /* _BinaryenSideEffectIsAtomic */, + Throws = 4096 /* _BinaryenSideEffectThrows */, + DanglingPop = 8192 /* _BinaryenSideEffectDanglingPop */, + TrapsNeverHappen = 16384 /* _BinaryenSideEffectTrapsNeverHappen */, + Any = 32767 /* _BinaryenSideEffectAny */ } export function getSideEffects(expr: ExpressionRef, module: ModuleRef): SideEffects { diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index 325359d237..0bea1ec612 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -512,8 +512,7 @@ export function isSpace(c: u32): bool { if (c < 0x1680) { // < (1) // , , , , , and // (c == 0x20 || c == 0xA0) was optimized to (c | 0x80) == 0xA0 - // @ts-ignore: cast - return ((c | 0x80) == 0xA0) | (c - 0x09 <= 0x0D - 0x09); + return ((c | 0x80) == 0xA0) || (c - 0x09 <= 0x0D - 0x09); } if (c - 0x2000 <= 0x200A - 0x2000) return true; switch (c) { diff --git a/std/assembly/util/uri.ts b/std/assembly/util/uri.ts index c8d72bca24..630f79be5f 100644 --- a/std/assembly/util/uri.ts +++ b/std/assembly/util/uri.ts @@ -271,6 +271,5 @@ function loadHex(src: usize, offset: usize): u32 { // @ts-ignore: decorator @inline function isHex(ch: u32): bool { - // @ts-ignore - return (ch - CharCode._0 < 10) | ((ch | 32) - CharCode.a < 6); + return (ch - CharCode._0 < 10) || ((ch | 32) - CharCode.a < 6); } diff --git a/tests/compiler/NonNullable.optimized.wat b/tests/compiler/NonNullable.optimized.wat index 74e9f4ab52..ef40f5ead3 100644 --- a/tests/compiler/NonNullable.optimized.wat +++ b/tests/compiler/NonNullable.optimized.wat @@ -45,7 +45,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -59,32 +59,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -101,29 +100,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 7974350127..2a632a59f7 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -146,11 +146,11 @@ ) (func $export:assert-nonnull/testProp (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -206,11 +206,11 @@ ) (func $export:assert-nonnull/testArr (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -306,11 +306,11 @@ ) (func $export:assert-nonnull/testElem (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -366,21 +366,9 @@ ) (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 global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -389,9 +377,21 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - block $__inlined_func$assert-nonnull/testAll + local.get $0 + i32.store + block $__inlined_func$assert-nonnull/testAll (result i32) + local.get $1 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store block $folding-inner0 local.get $0 i32.eqz @@ -419,6 +419,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 br $__inlined_func$assert-nonnull/testAll end i32.const 1056 @@ -432,7 +433,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 17808 @@ -444,21 +444,9 @@ ) (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 global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -467,9 +455,21 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - block $__inlined_func$assert-nonnull/testAll2 + local.get $0 + i32.store + block $__inlined_func$assert-nonnull/testAll2 (result i32) + local.get $1 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store block $folding-inner0 local.get $0 i32.eqz @@ -497,6 +497,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 br $__inlined_func$assert-nonnull/testAll2 end i32.const 1056 @@ -510,7 +511,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 17808 @@ -549,11 +549,11 @@ ) (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -609,11 +609,11 @@ ) (func $export:assert-nonnull/testRet (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -698,11 +698,11 @@ ) (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 5689d17f10..36ab116b87 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -166,13 +166,9 @@ global.set $binary/i i32.const 0 global.set $binary/i - global.get $binary/i i32.const 1 - i32.add global.set $binary/i - global.get $binary/i - i32.const 1 - i32.sub + i32.const 0 global.set $binary/i i32.const 0 global.set $binary/i @@ -212,13 +208,9 @@ global.set $binary/I i64.const 0 global.set $binary/I - global.get $binary/I i64.const 1 - i64.add global.set $binary/I - global.get $binary/I - i64.const 1 - i64.sub + i64.const 0 global.set $binary/I i64.const 0 global.set $binary/I diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 3e37054af4..870dd0f462 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -101,7 +101,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -115,32 +115,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -157,29 +156,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 2d3cd0117c..f57498eeea 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17980 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1095,56 +939,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1245,12 +1086,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1266,14 +1107,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1284,18 +1125,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1306,54 +1146,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1361,16 +1197,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1378,15 +1214,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1414,12 +1250,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1433,7 +1269,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1443,7 +1279,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1461,12 +1297,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1496,8 +1332,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1526,19 +1362,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1547,18 +1383,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1567,10 +1403,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1579,97 +1415,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1701,7 +1537,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1733,7 +1569,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1799,11 +1635,11 @@ 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 1596 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -1815,7 +1651,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1837,7 +1673,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1935,443 +1771,590 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + 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 - local.tee $1 - i32.const 0 - i32.store - local.get $1 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 38 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $1 + i32.const 1056 + i32.const 38 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if i32.const 0 - i32.store - local.get $0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.const 8 - i32.const 7 call $~lib/rt/itcms/__new local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1056 + i32.const 56 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - i32.const 2 - i32.store offset=4 + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18000 + i32.const 18048 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 66 - i32.const 3 + i32.const 1168 + i32.const 147 + i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 9 - call $~lib/rt/itcms/__new + i32.load offset=4 + i32.const -4 + i32.and local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + local.get $1 + i32.const 17980 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne + i32.load offset=8 + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 84 - i32.const 3 + i32.const 1168 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 3 + i32.and local.get $0 - i32.const 2 + i32.or i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + else + i32.const 1488 + i32.load local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne + i32.lt_u if - i32.const 0 - i32.const 1056 - i32.const 105 - i32.const 3 + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 i32.add - global.set $~lib/memory/__stack_pointer - return + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index b993737908..9fda589c77 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -52,18 +52,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-implements/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -102,160 +102,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17948 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1504 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -292,11 +138,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -308,28 +153,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -341,19 +183,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -378,9 +220,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -388,17 +230,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -526,7 +368,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -537,7 +379,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -557,44 +399,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -604,7 +445,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -614,20 +455,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -655,7 +496,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -682,15 +523,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -702,15 +540,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -731,6 +569,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -740,7 +581,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -777,8 +618,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -937,7 +778,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1062,7 +907,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1072,7 +917,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1085,14 +930,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1122,9 +966,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1140,13 +984,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1156,9 +1000,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1228,17 +1072,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1251,16 +1095,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1268,15 +1112,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1303,12 +1147,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1318,7 +1162,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1327,19 +1171,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1369,8 +1213,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1424,7 +1268,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1542,12 +1386,11 @@ ) (func $class-implements/C#constructor (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 block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1564 i32.lt_s @@ -1712,4 +1555,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17948 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1504 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/class-overloading-cast.optimized.wat b/tests/compiler/class-overloading-cast.optimized.wat index 072354d642..7c0f2cfb87 100644 --- a/tests/compiler/class-overloading-cast.optimized.wat +++ b/tests/compiler/class-overloading-cast.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -54,30 +54,30 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading-cast/v2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading-cast/v3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading-cast/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -116,160 +116,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18084 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1616 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1620 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -306,11 +152,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -322,28 +167,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -355,19 +197,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -392,9 +234,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -402,17 +244,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -540,7 +382,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -551,7 +393,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -571,44 +413,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -618,7 +459,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -628,20 +469,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -669,7 +510,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -696,15 +537,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -716,15 +554,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -745,6 +583,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -754,7 +595,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -791,8 +632,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -951,7 +792,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1076,7 +921,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1086,7 +931,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1099,14 +944,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1136,9 +980,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1154,13 +998,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1170,9 +1014,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1242,17 +1086,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1265,16 +1109,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1282,15 +1126,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1317,12 +1161,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1332,7 +1176,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1341,19 +1185,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1383,8 +1227,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1440,7 +1284,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1454,32 +1298,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1496,29 +1339,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1557,7 +1400,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1589,11 +1432,12 @@ (func $start:class-overloading-cast (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) block $folding-inner0 + 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 1700 i32.lt_s @@ -1819,15 +1663,17 @@ local.tee $1 i32.store offset=8 local.get $0 - i32.const 1488 - i32.const 1456 local.get $1 i32.const 8 i32.sub i32.load i32.const 6 i32.eq - select + if (result i32) + i32.const 1488 + else + i32.const 1456 + end local.tee $1 i32.store local.get $0 @@ -1897,13 +1743,14 @@ global.set $class-overloading-cast/c global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $class-overloading-cast/c local.tee $1 + global.get $class-overloading-cast/c + local.tee $2 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1600 i32.store offset=12 - local.get $1 + local.get $2 i32.const 8 i32.sub i32.load @@ -1928,13 +1775,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $class-overloading-cast/c local.tee $1 + global.get $class-overloading-cast/c + local.tee $2 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1600 i32.store offset=12 - local.get $1 + local.get $2 i32.const 8 i32.sub i32.load @@ -2004,4 +1852,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18084 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1616 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1620 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 5f2453d86b..85fa21eab4 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -66,42 +66,42 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/a local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/ia local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/ic local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/b2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -140,160 +140,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18316 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1792 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1796 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -330,11 +176,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -346,28 +191,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -379,19 +221,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -416,9 +258,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -426,17 +268,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -564,7 +406,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -575,7 +417,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -595,44 +437,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -642,7 +483,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -652,20 +493,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -693,7 +534,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -720,15 +561,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -740,15 +578,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -769,6 +607,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -778,7 +619,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -815,8 +656,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -975,7 +816,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1100,7 +945,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1110,7 +955,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1123,14 +968,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1160,9 +1004,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1178,13 +1022,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1194,9 +1038,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1266,17 +1110,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1289,16 +1133,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1306,15 +1150,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1341,12 +1185,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1356,7 +1200,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1365,19 +1209,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1407,8 +1251,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1464,7 +1308,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1478,32 +1322,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1520,29 +1363,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1615,7 +1458,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1709,11 +1552,11 @@ (func $start:class-overloading (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s @@ -2108,30 +1951,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual21 - block $default22 - block $case223 - block $case124 - block $case025 + block $__inlined_func$class-overloading/A#b@virtual22 + block $default23 + block $case224 + block $case125 + block $case026 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case025 $case124 $case025 $case025 $case223 $default22 + br_table $case026 $case125 $case026 $case026 $case224 $default23 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual21 + br $__inlined_func$class-overloading/A#b@virtual22 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual21 + br $__inlined_func$class-overloading/A#b@virtual22 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual21 + br $__inlined_func$class-overloading/A#b@virtual22 end i32.const 1488 global.set $class-overloading/which @@ -2162,30 +2005,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual30 - block $default31 - block $case232 - block $case133 - block $case034 + block $__inlined_func$class-overloading/A#get:c@virtual31 + block $default32 + block $case233 + block $case134 + block $case035 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case034 $case133 $case034 $case034 $case232 $default31 + br_table $case035 $case134 $case035 $case035 $case233 $default32 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual31 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual31 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual31 end i32.const 1488 global.set $class-overloading/which @@ -2214,30 +2057,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual39 - block $default40 - block $case241 - block $case142 - block $case043 + block $__inlined_func$class-overloading/A#b@virtual40 + block $default41 + block $case242 + block $case143 + block $case044 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case043 $case142 $case043 $case043 $case241 $default40 + br_table $case044 $case143 $case044 $case044 $case242 $default41 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual39 + br $__inlined_func$class-overloading/A#b@virtual40 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual39 + br $__inlined_func$class-overloading/A#b@virtual40 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual39 + br $__inlined_func$class-overloading/A#b@virtual40 end i32.const 1488 global.set $class-overloading/which @@ -2298,30 +2141,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual48 - block $default49 - block $case250 - block $case151 - block $case052 + block $__inlined_func$class-overloading/A#b@virtual49 + block $default50 + block $case251 + block $case152 + block $case053 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case052 $case151 $case052 $case052 $case250 $default49 + br_table $case053 $case152 $case053 $case053 $case251 $default50 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual48 + br $__inlined_func$class-overloading/A#b@virtual49 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual48 + br $__inlined_func$class-overloading/A#b@virtual49 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual48 + br $__inlined_func$class-overloading/A#b@virtual49 end i32.const 1488 global.set $class-overloading/which @@ -2352,30 +2195,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual57 - block $default58 - block $case259 - block $case160 - block $case061 + block $__inlined_func$class-overloading/A#get:c@virtual58 + block $default59 + block $case260 + block $case161 + block $case062 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case061 $case160 $case061 $case061 $case259 $default58 + br_table $case062 $case161 $case062 $case062 $case260 $default59 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual57 + br $__inlined_func$class-overloading/A#get:c@virtual58 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual57 + br $__inlined_func$class-overloading/A#get:c@virtual58 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual57 + br $__inlined_func$class-overloading/A#get:c@virtual58 end i32.const 1488 global.set $class-overloading/which @@ -2404,30 +2247,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual66 - block $default67 - block $case268 - block $case169 - block $case070 + block $__inlined_func$class-overloading/A#b@virtual67 + block $default68 + block $case269 + block $case170 + block $case071 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case070 $case169 $case070 $case070 $case268 $default67 + br_table $case071 $case170 $case071 $case071 $case269 $default68 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual66 + br $__inlined_func$class-overloading/A#b@virtual67 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual66 + br $__inlined_func$class-overloading/A#b@virtual67 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual66 + br $__inlined_func$class-overloading/A#b@virtual67 end i32.const 1488 global.set $class-overloading/which @@ -2513,30 +2356,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual75 - block $default76 - block $case277 - block $case178 - block $case079 + block $__inlined_func$class-overloading/A#b@virtual77 + block $default78 + block $case279 + block $case180 + block $case081 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case079 $case178 $case079 $case079 $case277 $default76 + br_table $case081 $case180 $case081 $case081 $case279 $default78 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 + br $__inlined_func$class-overloading/A#b@virtual77 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 + br $__inlined_func$class-overloading/A#b@virtual77 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 + br $__inlined_func$class-overloading/A#b@virtual77 end i32.const 1488 global.set $class-overloading/which @@ -2567,30 +2410,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual84 - block $default85 - block $case286 - block $case187 - block $case088 + block $__inlined_func$class-overloading/A#get:c@virtual86 + block $default87 + block $case288 + block $case189 + block $case090 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case088 $case187 $case088 $case088 $case286 $default85 + br_table $case090 $case189 $case090 $case090 $case288 $default87 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual84 + br $__inlined_func$class-overloading/A#get:c@virtual86 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual84 + br $__inlined_func$class-overloading/A#get:c@virtual86 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual84 + br $__inlined_func$class-overloading/A#get:c@virtual86 end i32.const 1488 global.set $class-overloading/which @@ -2621,30 +2464,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual93 - block $default94 - block $case295 - block $case196 - block $case097 + block $__inlined_func$class-overloading/A#b@virtual95 + block $default96 + block $case297 + block $case198 + block $case099 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case097 $case196 $case097 $case097 $case295 $default94 + br_table $case099 $case198 $case099 $case099 $case297 $default96 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual93 + br $__inlined_func$class-overloading/A#b@virtual95 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual93 + br $__inlined_func$class-overloading/A#b@virtual95 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual93 + br $__inlined_func$class-overloading/A#b@virtual95 end i32.const 1488 global.set $class-overloading/which @@ -2699,8 +2542,8 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@virtual - block $default102 - block $case1103 + block $default105 + block $case1106 local.get $0 i32.const 8 i32.sub @@ -2712,8 +2555,8 @@ local.get $0 i32.const 12 i32.eq - br_if $case1103 - br $default102 + br_if $case1106 + br $default105 end i32.const 1680 global.set $class-overloading/which @@ -2774,9 +2617,9 @@ global.get $class-overloading/ic local.tee $0 i32.store - block $__inlined_func$class-overloading/IA#foo@virtual105 - block $default106 - block $case1107 + block $__inlined_func$class-overloading/IA#foo@virtual109 + block $default110 + block $case1111 local.get $0 i32.const 8 i32.sub @@ -2788,16 +2631,16 @@ local.get $0 i32.const 12 i32.eq - br_if $case1107 - br $default106 + br_if $case1111 + br $default110 end i32.const 1680 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual105 + br $__inlined_func$class-overloading/IA#foo@virtual109 end i32.const 1712 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual105 + br $__inlined_func$class-overloading/IA#foo@virtual109 end unreachable end @@ -2875,7 +2718,7 @@ global.get $class-overloading/b2 local.tee $0 i32.store - block $__inlined_func$class-overloading/A2#foo@virtual + block $__inlined_func$class-overloading/A2#foo@virtual (result i32) local.get $0 i32.const 8 i32.sub @@ -2964,6 +2807,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 3 br $__inlined_func$class-overloading/A2#foo@virtual end i32.const 1744 @@ -2973,6 +2817,16 @@ call $~lib/builtins/abort unreachable end + i32.const 3 + i32.ne + 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 8 i32.add @@ -2988,12 +2842,11 @@ ) (func $class-overloading/B#constructor (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 block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s @@ -3130,4 +2983,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18316 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1792 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 13f507fb7a..36d5739d46 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -45,11 +45,11 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -116,7 +116,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -139,7 +139,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -149,15 +149,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -222,30 +222,6 @@ 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) @@ -282,11 +258,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +273,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +303,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +340,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +350,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +488,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +499,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +519,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +565,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +575,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +616,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +643,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +660,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +689,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +701,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +738,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +898,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +1027,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +1037,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +1050,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,56 +1081,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1304,14 +1275,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1321,17 +1292,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1347,22 +1318,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1373,11 +1344,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1472,10 +1443,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1483,7 +1450,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1494,54 +1464,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1549,16 +1515,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1567,7 +1533,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1575,9 +1541,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1588,11 +1554,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1603,12 +1569,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1621,89 +1587,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1711,7 +1677,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1719,186 +1685,212 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $class/testGenericInitializer (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 32 - call $~lib/memory/memory.fill - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 32 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + 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 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 32 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + i32.store + local.get $2 + if + local.get $1 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + 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 $4 + 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 $4 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.const 32 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.store + local.get $1 + if + local.get $3 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $0 + 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 $0 + 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 $0 + 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 + return + end + i32.const 18000 + i32.const 18048 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 call $~lib/builtins/abort unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $~lib/array/Array - block $class/Animal - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $~lib/array/Array $invalid - end - return + block $class/Animal + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $folding-inner0 $invalid end return end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end unreachable @@ -1908,7 +1900,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -1990,4 +1982,23 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index eb2ba60aac..e503951a8d 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -53,72 +53,72 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/emptyCtorWithFieldInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/emptyCtorWithFieldNoInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/emptyCtorWithFieldAccess local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/none local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/justFieldInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/justFieldNoInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorReturns local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorConditionallyReturns local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorConditionallyReturnsThis local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorFieldInitOrder local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -157,160 +157,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17988 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -347,11 +193,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -363,28 +208,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -396,19 +238,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -433,9 +275,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -443,17 +285,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -581,7 +423,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -592,7 +434,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -612,44 +454,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -659,7 +500,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -669,20 +510,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -710,7 +551,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -737,15 +578,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -757,15 +595,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -786,6 +624,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -795,7 +636,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -832,8 +673,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -992,7 +833,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1117,7 +962,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1127,7 +972,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1140,14 +985,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1172,56 +1016,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1322,12 +1163,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1343,14 +1184,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1361,18 +1202,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1383,54 +1223,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1438,16 +1274,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1455,15 +1291,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1491,12 +1327,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1510,7 +1346,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1520,7 +1356,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1538,12 +1374,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1573,8 +1409,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1603,19 +1439,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1624,18 +1460,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1644,10 +1480,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1656,97 +1492,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1778,47 +1614,47 @@ end end end - local.get $3 + local.get $2 ) (func $start:constructor (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17988 - 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + memory.size + i32.const 16 + i32.shl + i32.const 17988 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1604 i32.lt_s @@ -2199,7 +2035,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2230,4 +2066,153 @@ (func $~start call $start:constructor ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17988 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index ddba997211..3a6eb21a03 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17892 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1472 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1154,314 +998,313 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - i32.const 10 - local.set $0 - loop $do-loop|0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-loop|0 - end - local.get $0 - if - i32.const 0 - i32.const 1056 + block $folding-inner0 i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $do-loop|00 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub local.set $0 + loop $do-loop|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-loop|0 + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - br_if $do-loop|00 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 10 - local.set $0 - loop $do-loop|01 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $do-loop|00 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + br_if $do-loop|00 + end local.get $0 - i32.const 1 - i32.sub + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const 10 local.set $0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - loop $do-loop|1 + loop $do-loop|01 + local.get $0 + i32.const 1 + i32.sub + local.set $0 local.get $2 i32.const 1 i32.add local.set $2 + loop $do-loop|1 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-loop|1 + end local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-loop|1 + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + br_if $do-loop|01 end local.get $0 if i32.const 0 i32.const 1056 - i32.const 39 - i32.const 5 + i32.const 42 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 9 i32.ne if i32.const 0 i32.const 1056 - i32.const 40 - i32.const 5 + i32.const 44 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - br_if $do-loop|01 - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $do-loop|02 + local.set $0 + loop $do-loop|02 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-loop|02 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $do-loop|02 - end - local.get $0 - i32.const 10 - i32.ne - if + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $do-loop|03 + local.set $0 + loop $do-loop|03 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-loop|03 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $do-loop|03 - end - local.get $0 - i32.const 10 - i32.ne - if + if + i32.const 0 + i32.const 1056 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $do-loop|04 + local.set $0 + loop $do-loop|04 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + i32.const 0 + local.get $0 + select + br_if $do-loop|04 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - local.get $0 - select - br_if $do-loop|04 - end - local.get $0 - i32.const 10 - i32.ne - if + local.set $0 i32.const 0 - i32.const 1056 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - i32.const 0 - local.set $2 - loop $do-loop|06 + local.set $1 + loop $do-loop|05 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + if + loop $do-loop|17 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.rem_s + i32.const 0 + local.get $1 + select + br_if $do-loop|17 + end + local.get $0 + br_if $do-loop|05 + end + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne if - loop $do-loop|18 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.rem_s - i32.const 0 - local.get $2 - select - br_if $do-loop|18 - end - local.get $0 - br_if $do-loop|06 + i32.const 0 + i32.const 1056 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 134 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 90 - i32.ne - if + local.get $1 + i32.const 90 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17892 + 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 0 - i32.const 1056 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17892 - 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 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + 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 1508 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $do/Ref#constructor i32.store - loop $do-loop|09 - local.get $2 + loop $do-loop|06 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if @@ -1474,9 +1317,9 @@ i32.store end local.get $0 - br_if $do-loop|09 + br_if $do-loop|06 end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1511,15 +1354,15 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $do/Ref#constructor - local.tee $0 + local.tee $1 i32.store - loop $do-loop|07 - block $do-break|08 + loop $do-loop|08 + block $do-break|09 local.get $2 i32.const 1 i32.add @@ -1528,11 +1371,11 @@ i32.eq if i32.const 0 - local.set $0 - br $do-break|08 + local.set $1 + br $do-break|09 end call $do/Ref#constructor - br_if $do-loop|07 + br_if $do-loop|08 end end local.get $2 @@ -1546,7 +1389,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1622,7 +1465,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1655,7 +1498,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1709,17 +1552,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1732,16 +1575,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1749,15 +1592,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1784,22 +1627,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1808,19 +1651,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1832,8 +1675,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1846,12 +1689,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1865,7 +1708,7 @@ local.get $0 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 @@ -1877,16 +1720,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17892 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1472 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index 6cffd17c15..36f878bfc5 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -46,13 +46,13 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1520 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -168,10 +168,10 @@ local.get $0 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $1 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 1 i32.le_u if (result i32) @@ -179,7 +179,7 @@ else i32.const 1568 i32.load - local.get $1 + local.get $2 i32.lt_u if i32.const 1248 @@ -189,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 i32.shl i32.const 1572 @@ -205,53 +205,29 @@ i32.const 2 end local.set $3 - local.get $2 + local.get $1 i32.load offset=8 - local.set $1 + local.set $2 local.get $0 - local.get $2 + local.get $1 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - 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) @@ -288,11 +264,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -304,28 +279,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -337,19 +309,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -374,9 +346,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -384,17 +356,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -522,7 +494,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +505,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +525,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -600,7 +571,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +581,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -651,7 +622,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -678,15 +649,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -698,15 +666,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -727,6 +695,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +707,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +744,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -933,7 +904,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +1033,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +1043,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +1056,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,56 +1087,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1263,12 +1234,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1284,14 +1255,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1302,18 +1273,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1324,54 +1294,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1379,16 +1345,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1396,15 +1362,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1432,12 +1398,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1451,7 +1417,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1461,7 +1427,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1479,12 +1445,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1514,8 +1480,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1544,19 +1510,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1565,18 +1531,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1585,10 +1551,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1597,97 +1563,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1719,7 +1685,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) @@ -1783,7 +1749,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -1801,33 +1767,33 @@ i32.const 1 i32.eq if - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#makeGray else - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $1 + local.set $2 + local.get $1 local.get $0 global.get $~lib/rt/itcms/white - local.get $2 i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 - local.get $2 local.get $0 + local.get $1 i32.store offset=8 end ) @@ -1886,7 +1852,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1926,4 +1892,23 @@ i32.const 1344 global.set $~lib/rt/itcms/fromSpace ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat index cf783e1948..25c28ebc6f 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -35,9 +35,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -76,160 +76,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17852 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -266,11 +112,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -282,28 +127,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -315,19 +157,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -352,9 +194,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -362,17 +204,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -500,7 +342,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -511,7 +353,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -531,44 +373,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -578,7 +419,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -588,20 +429,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -629,7 +470,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -656,15 +497,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -676,15 +514,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -705,6 +543,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -714,7 +555,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -751,8 +592,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -911,7 +752,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1036,7 +881,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1046,7 +891,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1059,14 +904,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1096,9 +940,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1114,13 +958,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1130,9 +974,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1166,7 +1010,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1266,11 +1110,11 @@ i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1283,16 +1127,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $1 local.get $0 local.get $1 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1301,7 +1145,7 @@ end end local.get $2 - local.get $1 + local.get $0 i32.const 16 i32.shl memory.size @@ -1340,17 +1184,17 @@ call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $1 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1359,19 +1203,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $3 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $1 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $3 i32.const -2 i32.and i32.store @@ -1399,17 +1243,17 @@ global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $2 i32.store offset=8 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and @@ -1429,4 +1273,153 @@ i32.add global.set $~lib/rt/itcms/total ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17852 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index aeb72df942..3c66d1990d 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -89,9 +89,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -130,160 +130,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17868 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -320,11 +166,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -336,28 +181,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -369,19 +211,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -406,9 +248,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -416,17 +258,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -554,7 +396,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -565,7 +407,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -585,44 +427,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -632,7 +473,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -642,20 +483,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -683,7 +524,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -710,15 +551,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -730,15 +568,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -759,6 +597,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -768,7 +609,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -805,8 +646,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -965,7 +806,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1090,7 +935,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1100,7 +945,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1113,14 +958,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1150,9 +994,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1168,13 +1012,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1184,9 +1028,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1256,17 +1100,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1279,16 +1123,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1296,15 +1140,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1331,12 +1175,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1346,7 +1190,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1355,19 +1199,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1397,8 +1241,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1427,34 +1271,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 ) (func $export/mul (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1501,7 +1345,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1607,11 +1451,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1701,11 +1545,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1768,4 +1612,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17868 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index c5d90544eb..50c1473a52 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -72,26 +72,26 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $rereexport/car local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rereexport/exportsNamespaceCar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $reexport/car local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -131,160 +131,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17956 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1536 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -321,11 +167,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -337,28 +182,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -370,19 +212,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -407,9 +249,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -417,17 +259,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -555,7 +397,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -566,7 +408,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -586,44 +428,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -633,7 +474,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -643,20 +484,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -684,7 +525,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -711,15 +552,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -731,15 +569,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -760,6 +598,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -769,7 +610,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -806,8 +647,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -966,7 +807,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1091,7 +936,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1101,7 +946,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1114,14 +959,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1151,9 +995,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1169,13 +1013,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1185,9 +1029,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1230,7 +1074,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1240,134 +1084,132 @@ ) (func $~start (local $0 i32) - block $__inlined_func$start:exportstar-rereexport + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17956 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17956 - i32.sub + i32.const 1504 + i32.const 18 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:exportstar-rereexport + call $~lib/builtins/abort + unreachable end - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $exports/Car#constructor (result i32) (local $0 i32) @@ -1391,7 +1233,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1445,17 +1287,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1468,16 +1310,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1485,15 +1327,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1520,22 +1362,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1544,19 +1386,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1568,8 +1410,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1582,12 +1424,12 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1601,7 +1443,7 @@ local.get $0 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 @@ -1616,46 +1458,195 @@ local.get $0 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $4 local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17956 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1536 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 33fe5c45e3..820757f700 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -47,15 +47,15 @@ (local $0 i32) (local $1 i32) i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1408 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1616 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1216 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -122,7 +122,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -145,7 +145,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -155,15 +155,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -228,30 +228,6 @@ 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) @@ -288,11 +264,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -304,28 +279,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -337,19 +309,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -374,9 +346,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -384,17 +356,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -522,7 +494,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +505,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +525,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -600,7 +571,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +581,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -651,7 +622,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -678,15 +649,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -698,15 +666,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -727,6 +695,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +707,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +744,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -933,7 +904,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +1033,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +1043,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +1056,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,56 +1087,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1310,14 +1281,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1327,17 +1298,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1353,22 +1324,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1379,11 +1350,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1478,10 +1449,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1489,7 +1456,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1500,54 +1470,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1555,16 +1521,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1573,7 +1539,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1581,9 +1547,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1594,11 +1560,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1609,12 +1575,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1627,89 +1593,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1717,7 +1683,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1725,66 +1691,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - 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 - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1798,17 +1704,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1954,19 +1860,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1981,7 +1887,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1992,10 +1898,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2003,10 +1909,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2017,7 +1923,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2047,17 +1953,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2072,7 +1978,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2083,10 +1989,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2094,10 +2000,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2108,7 +2014,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2134,17 +2040,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2159,7 +2065,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2170,10 +2076,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2181,10 +2087,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2195,7 +2101,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2232,131 +2138,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2373,59 +2257,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2442,7 +2320,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2453,11 +2331,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2471,17 +2349,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2495,332 +2373,230 @@ i32.store8 end ) - (func $~lib/array/Array#push (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__renew (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) - i32.const 1180 - i32.load - local.tee $8 - i32.const 1 - i32.add - local.tee $7 - local.tee $5 - i32.const 1176 + local.get $0 + i32.const 20 + i32.sub + local.tee $2 i32.load - local.tee $10 - i32.const 2 - i32.shr_u - i32.gt_u + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub local.get $5 - i32.const 268435455 - i32.gt_u + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u if - i32.const 1616 - i32.const 1664 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/rt/itcms/__renew - local.get $10 - i32.const 1 - i32.shl - local.tee $4 - i32.const 1073741820 - local.get $4 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $5 - i32.const 8 + local.get $1 + local.get $0 local.get $5 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $4 - local.get $2 - local.get $4 - i32.gt_u - select - local.tee $9 - local.tee $11 - i32.const 1168 - i32.load - local.tee $6 - local.tee $1 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.gt_u + if + local.get $0 + i32.const 7 i32.and - i32.const 16 - i32.sub - i32.le_u + local.get $1 + i32.const 7 + i32.and + i32.eq if - local.get $3 - local.get $11 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end end - local.get $11 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $5 - local.set $4 - local.get $11 - local.get $3 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $11 - i32.gt_u - select - local.set $11 - block $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $4 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $4 - i32.sub - local.get $11 - i32.sub - i32.const 0 - local.get $11 - i32.const 1 - i32.shl - i32.sub - i32.le_u + loop $while-continue|2 + local.get $5 if - local.get $4 local.get $1 - local.get $11 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 end - local.get $1 - local.get $4 - i32.gt_u - if + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 local.get $1 + local.get $5 + i32.add i32.const 7 i32.and - local.get $4 - i32.const 7 - i32.and - i32.eq if - loop $while-continue|0 - local.get $4 - i32.const 7 - i32.and - if - local.get $11 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $11 - i32.const 8 - i32.ge_u - if - local.get $4 - local.get $1 - i64.load - i64.store - local.get $11 - i32.const 8 - i32.sub - local.set $11 - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $11 - if - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $while-continue|2 - end + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end - else - local.get $1 - i32.const 7 - i32.and - local.get $4 - i32.const 7 - i32.and - i32.eq + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u if - loop $while-continue|3 - local.get $4 - local.get $11 - i32.add - i32.const 7 - i32.and - if - local.get $11 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.get $11 - i32.const 1 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $11 - i32.const 8 - i32.ge_u - if - local.get $4 - local.get $11 - i32.const 8 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $11 - if - local.get $4 - local.get $11 - i32.const 1 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 end end end - local.get $5 - local.set $1 - end - local.get $1 - local.get $10 - i32.add - local.get $9 - local.get $10 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $6 - 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 + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end - i32.const 1176 - local.get $9 - i32.store end - i32.const 1172 - i32.load - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $0 - i32.store - i32.const 1168 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - i32.const 1180 - local.get $7 - i32.store + local.get $4 ) (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) @@ -2834,18 +2610,18 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 i32.const 4 @@ -2856,7 +2632,11 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner1 @@ -2891,7 +2671,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2900,17 +2680,22 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s @@ -3003,10 +2788,6 @@ local.get $0 i32.const 0 i32.store offset=16 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3020,8 +2801,104 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + i32.const 1180 + i32.load + local.tee $1 + i32.const 1 + i32.add + local.tee $2 + local.tee $5 + i32.const 1176 + i32.load + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1168 + i32.load + local.tee $3 + local.get $4 + i32.const 1 + i32.shl + local.tee $6 + i32.const 1073741820 + local.get $6 + i32.const 1073741820 + i32.lt_u + select + local.tee $6 + local.get $5 + i32.const 8 + local.get $5 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $5 + local.get $5 + local.get $6 + i32.lt_u + select + local.tee $5 + call $~lib/rt/itcms/__renew + local.tee $6 + i32.add + local.get $5 + local.get $4 + i32.sub + call $~lib/memory/memory.fill + local.get $3 + local.get $6 + i32.ne + if + i32.const 1168 + local.get $6 + i32.store + i32.const 1172 + local.get $6 + i32.store + local.get $6 + if + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + end + i32.const 1176 + local.get $5 + i32.store + end + i32.const 1172 + i32.load + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $0 - call $~lib/array/Array#push + i32.store + local.get $0 + if + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + i32.const 1180 + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3035,4 +2912,64 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) + 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.const 1152 + i32.load + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 1148 + local.get $0 + local.get $1 + select + 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 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 9647a38b22..2b3d08b7b4 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -1,8 +1,8 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -111,7 +111,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -134,7 +134,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -144,15 +144,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -217,30 +217,6 @@ 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) @@ -277,11 +253,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -293,28 +268,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -326,19 +298,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -363,9 +335,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -373,17 +345,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -511,7 +483,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -522,7 +494,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -542,44 +514,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -589,7 +560,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -599,20 +570,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -640,7 +611,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -667,15 +638,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -687,15 +655,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -716,6 +684,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -725,7 +696,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -762,8 +733,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -922,7 +893,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1047,7 +1022,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1057,7 +1032,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1070,14 +1045,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,9 +1081,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1125,13 +1099,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1141,9 +1115,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1213,17 +1187,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1236,16 +1210,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1253,15 +1227,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1288,12 +1262,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1303,7 +1277,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1312,19 +1286,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1354,8 +1328,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1384,89 +1358,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1490,7 +1409,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -1582,9 +1501,56 @@ local.get $0 local.get $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 8 i32.add @@ -1592,12 +1558,11 @@ ) (func $export:extends-recursive/Child#constructor (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 block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1651,9 +1616,6 @@ local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1678,4 +1640,23 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/features/gc.optimized.wat b/tests/compiler/features/gc.optimized.wat index 48a9444574..c8b639951c 100644 --- a/tests/compiler/features/gc.optimized.wat +++ b/tests/compiler/features/gc.optimized.wat @@ -1,17 +1,11 @@ (module (type $none_=>_none (func)) - (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) ",") (data (i32.const 1048) "\01\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started + nop ) ) diff --git a/tests/compiler/features/nontrapping-f2i.optimized.wat b/tests/compiler/features/nontrapping-f2i.optimized.wat index 35c5fd1474..75a2479112 100644 --- a/tests/compiler/features/nontrapping-f2i.optimized.wat +++ b/tests/compiler/features/nontrapping-f2i.optimized.wat @@ -1,15 +1,9 @@ (module (type $none_=>_none (func)) - (global $~started (mut i32) (i32.const 0)) (memory $0 0) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started + nop ) ) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 6b1df4a9bf..7b09a7e9a6 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,10 +1,9 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -53,11 +52,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -69,28 +67,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -102,19 +97,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -139,9 +134,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -149,17 +144,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -287,7 +282,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -298,7 +293,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -318,44 +313,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -365,7 +359,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -375,20 +369,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -416,7 +410,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -443,15 +437,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -463,15 +454,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -492,6 +483,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -501,7 +495,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -538,8 +532,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -614,56 +608,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -741,19 +732,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -764,54 +748,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -819,16 +799,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -836,16 +816,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -862,7 +842,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -872,13 +852,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -891,40 +871,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -944,8 +924,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -989,27 +967,42 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~start (local $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 64 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 local.get $0 v128.load offset=16 v128.store offset=32 local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store8 @@ -1029,8 +1022,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store16 @@ -1050,8 +1051,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store @@ -1071,8 +1080,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i64.const 42 i64.store @@ -1092,8 +1109,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store @@ -1113,8 +1138,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i64.const 42 i64.store diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index bc05a86e76..983d7b4f3f 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -58,11 +58,11 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1536 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -129,7 +129,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -152,7 +152,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -162,15 +162,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -235,30 +235,6 @@ 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) @@ -295,11 +271,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -311,28 +286,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -344,19 +316,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -381,9 +353,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -391,17 +363,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -529,7 +501,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +512,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +532,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -607,7 +578,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +588,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -658,7 +629,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -685,15 +656,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -705,15 +673,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -734,6 +702,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +714,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +751,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -940,7 +911,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1065,7 +1040,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1075,7 +1050,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1088,14 +1063,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1120,56 +1094,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1317,14 +1288,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1334,17 +1305,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1360,22 +1331,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1386,11 +1357,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1485,10 +1456,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1496,7 +1463,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1507,54 +1477,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1562,16 +1528,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1580,7 +1546,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1588,9 +1554,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1601,11 +1567,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1616,12 +1582,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1634,89 +1600,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1724,7 +1690,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1732,61 +1698,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1813,7 +1724,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1827,32 +1738,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1869,29 +1779,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1942,24 +1852,23 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $0 + local.tee $1 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $1 + local.get $0 i32.load offset=8 - local.tee $1 + local.tee $0 if - local.get $1 - call $~lib/rt/itcms/__visit + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1970,7 +1879,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1979,7 +1888,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2149,9 +2058,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2193,9 +2105,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2236,9 +2151,6 @@ local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2403,9 +2315,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2447,15 +2362,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2475,7 +2390,7 @@ end global.get $~lib/memory/__stack_pointer call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2487,30 +2402,33 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 4 i32.const 13 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store + local.get $2 local.get $0 - local.get $1 i32.store local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.load - local.get $1 + local.get $0 i32.ne if i32.const 0 @@ -2543,9 +2461,6 @@ local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2586,9 +2501,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2630,15 +2548,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2741,24 +2659,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link local.get $1 - local.get $0 i32.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2769,7 +2684,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 local.tee $0 i32.store offset=8 @@ -2786,24 +2701,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 i32.const 1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link local.get $1 - local.get $0 i32.store offset=16 - local.get $0 + local.get $1 i32.load i32.const 1 i32.ne @@ -2816,7 +2728,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 local.tee $0 i32.store offset=8 @@ -2833,24 +2745,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=20 - local.get $0 + local.get $1 i32.const 1648 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1648 - call $~lib/rt/itcms/__link - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 0 i32.store - local.get $1 local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2861,15 +2773,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=4 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1648 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1648 call $~lib/string/String.__eq i32.eqz @@ -2882,24 +2794,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=32 - local.get $0 + local.get $1 i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 1680 i32.store offset=4 - local.get $0 - i32.const 1680 - call $~lib/rt/itcms/__link local.get $1 + i32.const 1680 + call $byn-split-outlined-A$~lib/rt/itcms/__link local.get $0 + local.get $1 i32.store offset=36 - local.get $0 + local.get $1 i32.load i32.const 2 i32.ne @@ -2912,15 +2824,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=4 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1680 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1680 call $~lib/string/String.__eq i32.eqz @@ -2933,29 +2845,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - call $field-initialization/SomeOtherObject#constructor local.tee $0 + call $field-initialization/SomeOtherObject#constructor + local.tee $1 i32.store offset=36 - local.get $0 + local.get $1 i32.const 1712 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1712 - call $~lib/rt/itcms/__link - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link local.get $1 - local.get $0 i32.store offset=24 - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2966,11 +2875,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -2983,15 +2892,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=8 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=8 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1712 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1712 call $~lib/string/String.__eq i32.eqz @@ -3004,29 +2913,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - call $field-initialization/SomeOtherObject#constructor local.tee $0 + call $field-initialization/SomeOtherObject#constructor + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 i32.store - local.get $0 + local.get $1 i32.const 1744 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1744 - call $~lib/rt/itcms/__link - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 1776 i32.store offset=8 - local.get $0 - i32.const 1776 - call $~lib/rt/itcms/__link local.get $1 + i32.const 1776 + call $byn-split-outlined-A$~lib/rt/itcms/__link local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.const 3 i32.ne @@ -3039,12 +2948,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $1 i32.load offset=4 local.tee $2 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1744 i32.store offset=28 local.get $2 @@ -3060,15 +2969,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=8 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=8 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1776 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1776 call $~lib/string/String.__eq i32.eqz @@ -3104,15 +3013,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3131,7 +3040,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 + local.get $0 i32.const 4 i32.const 23 call $~lib/rt/itcms/__new @@ -3141,10 +3051,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.store offset=24 local.get $0 @@ -3159,7 +3071,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 + local.get $0 i32.const 4 i32.const 24 call $~lib/rt/itcms/__new @@ -3169,16 +3082,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.store local.get $0 @@ -3275,9 +3187,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3319,9 +3234,6 @@ 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 4 i32.add @@ -3363,13 +3275,78 @@ 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 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 + ) ) diff --git a/tests/compiler/field.optimized.wat b/tests/compiler/field.optimized.wat index 5b26035e25..9f4d2c187a 100644 --- a/tests/compiler/field.optimized.wat +++ b/tests/compiler/field.optimized.wat @@ -38,9 +38,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -107,7 +107,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -130,7 +130,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -140,15 +140,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -213,30 +213,6 @@ 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) @@ -273,11 +249,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -289,28 +264,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -322,19 +294,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -359,9 +331,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -369,17 +341,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -507,7 +479,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -518,7 +490,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -538,44 +510,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -585,7 +556,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -595,20 +566,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,7 +607,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -663,15 +634,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -683,15 +651,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -712,6 +680,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -721,7 +692,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -758,8 +729,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -918,7 +889,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1043,7 +1018,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1053,7 +1028,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1066,14 +1041,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1098,56 +1072,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1248,12 +1219,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1269,14 +1240,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1287,18 +1258,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1309,71 +1279,67 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 i32.add - i32.const 65535 + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1381,15 +1347,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1417,12 +1383,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1436,7 +1402,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1446,7 +1412,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1464,12 +1430,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1499,8 +1465,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1529,19 +1495,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1550,18 +1516,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1570,10 +1536,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1582,97 +1548,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1704,62 +1670,7 @@ end end end - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (local $1 i32) @@ -1768,9 +1679,9 @@ (local $4 i32) (local $5 i32) i32.const 1456 - local.set $3 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $1 i32.const 3 i32.and i32.const 0 @@ -1782,13 +1693,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1809,25 +1720,25 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=8 i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=12 i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -1844,17 +1755,17 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 - local.get $3 + local.get $1 i32.const 8 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 8 i32.add @@ -1865,13 +1776,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 4 i32.add @@ -1882,13 +1793,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load16_u i32.store16 - local.get $3 + local.get $1 i32.const 2 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 2 i32.add @@ -1899,7 +1810,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -1920,15 +1831,15 @@ i32.sub br_table $case0|2 $case1|2 $case2|2 $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.get $3 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 @@ -1938,15 +1849,15 @@ i32.const 1 i32.add local.set $0 - local.get $3 + local.get $1 i32.const 2 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1959,7 +1870,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=1 local.tee $2 i32.const 8 @@ -1970,9 +1881,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=5 - local.tee $1 + local.tee $3 i32.const 8 i32.shl local.get $2 @@ -1981,18 +1892,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=9 local.tee $2 i32.const 8 i32.shl - local.get $1 + local.get $3 i32.const 24 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=13 local.tee $4 i32.const 8 @@ -2002,10 +1913,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2019,25 +1930,25 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 local.get $5 @@ -2050,7 +1961,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=2 local.tee $2 i32.const 16 @@ -2061,9 +1972,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=6 - local.tee $1 + local.tee $3 i32.const 16 i32.shl local.get $2 @@ -2072,18 +1983,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=10 local.tee $2 i32.const 16 i32.shl - local.get $1 + local.get $3 i32.const 16 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=14 local.tee $4 i32.const 16 @@ -2093,10 +2004,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2110,7 +2021,7 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 @@ -2118,13 +2029,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -2137,7 +2048,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=3 local.tee $2 i32.const 24 @@ -2148,9 +2059,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=7 - local.tee $1 + local.tee $3 i32.const 24 i32.shl local.get $2 @@ -2159,18 +2070,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=11 local.tee $2 i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 8 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=15 local.tee $4 i32.const 24 @@ -2180,10 +2091,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2202,288 +2113,238 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 8 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 4 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 2 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2492,7 +2353,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -2505,274 +2366,361 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $6 - 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 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - i32.const 1456 - local.set $2 - block $~lib/util/memory/memmove|inlined.0 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 + i32.store + local.get $0 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 - local.tee $3 - i32.const 1456 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - i32.const 1456 - i32.eq - if - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 + 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 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 1456 - i32.lt_u - if - local.get $3 - i32.const 7 - i32.and - i32.eqz + local.set $1 + block $~lib/util/memory/memmove|inlined.0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + local.tee $0 + i32.const 1456 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + i32.const 1456 + i32.eq if - loop $while-continue|0 - local.get $3 - i32.const 7 - i32.and + local.get $0 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + i32.const 1456 + i32.lt_u + if + local.get $0 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $6 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $6 + i32.const 8 + i32.sub + local.set $6 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $6 if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.tee $1 + local.get $0 + local.tee $2 i32.const 1 i32.add - local.set $3 - local.get $2 - local.tee $0 + local.set $0 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $2 - local.get $1 - local.get $0 + local.set $1 + local.get $2 + local.get $3 i32.load8_u i32.store8 - br $while-continue|0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 end end - loop $while-continue|1 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $2 - i64.load - i64.store - local.get $8 - i32.const 8 - i32.sub - local.set $8 - local.get $3 - i32.const 8 + else + local.get $0 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|3 + local.get $0 + local.get $6 i32.add - local.set $3 - local.get $2 + i32.const 7 + i32.and + if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + local.get $0 + i32.add + local.get $6 + i32.const 1456 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $6 i32.const 8 - i32.add - local.set $2 - br $while-continue|1 + i32.ge_u + if + local.get $6 + i32.const 8 + i32.sub + local.tee $6 + local.get $0 + i32.add + local.get $6 + i32.const 1456 + i32.add + i64.load + i64.store + br $while-continue|4 + end end end - end - loop $while-continue|2 - local.get $8 - if - local.get $3 - local.tee $1 - i32.const 1 - i32.add - local.set $3 - local.get $2 - local.tee $0 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.get $0 - i32.load8_u - i32.store8 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $3 - local.get $8 - i32.add - i32.const 7 - i32.and + loop $while-continue|5 + local.get $6 if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $6 i32.const 1 i32.sub - local.tee $8 - local.get $3 + local.tee $6 + local.get $0 i32.add - local.get $8 + local.get $6 i32.const 1456 i32.add i32.load8_u i32.store8 - br $while-continue|3 + br $while-continue|5 end end - loop $while-continue|4 - local.get $8 - i32.const 8 - i32.ge_u + end + end + local.get $5 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $5 + i32.store + local.get $5 + if + local.get $1 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $5 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + 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 $0 + 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 if - local.get $8 - i32.const 8 - i32.sub - local.tee $8 - local.get $3 - i32.add - local.get $8 - i32.const 1456 - i32.add - i64.load - i64.store - br $while-continue|4 + local.get $0 + call $~lib/rt/itcms/Object#makeGray end end end - loop $while-continue|5 - local.get $8 + end + local.get $1 + local.get $5 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.tee $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + br_if $folding-inner1 + 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 $8 + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state i32.const 1 - i32.sub - local.tee $8 - local.get $3 - i32.add - local.get $8 - i32.const 1456 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + 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 $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $4 - local.get $7 - i32.store - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $7 - i32.store - local.get $2 - local.get $7 - call $~lib/rt/itcms/__link - local.get $2 - local.get $7 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $2 - i32.store - local.get $6 - local.get $2 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $6 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 call $~lib/builtins/abort unreachable ) @@ -2782,57 +2730,54 @@ (local $3 i32) block $folding-inner0 block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return + block $~lib/array/Array<~lib/string/String> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid end return end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 if - local.get $2 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $1 - i32.load - call $~lib/rt/itcms/__visit - return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -2842,7 +2787,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2913,4 +2858,23 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 671fc61a00..50bf8dd7c8 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17892 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1472 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1154,281 +998,281 @@ (local $0 i32) (local $1 i32) (local $2 i32) - loop $for-loop|0 + block $folding-inner0 + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end local.get $0 i32.const 10 - i32.lt_s + i32.ne if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + i32.const 1056 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.const 10 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|00 + local.set $0 + loop $for-loop|00 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end local.get $0 i32.const 10 - i32.lt_s + i32.ne if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|01 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|01 + end end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $for-loop|01 local.get $0 - i32.const 0 - i32.gt_s if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|01 + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - if i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|02 + local.set $0 + loop $for-loop|02 + local.get $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end local.get $0 i32.const 10 i32.ne if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|03 local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|02 + i32.sub + local.tee $0 + br_if $for-loop|03 end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $for-loop|03 local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $for-loop|03 - end - local.get $0 - if + if + i32.const 0 + i32.const 1056 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|05 + local.set $0 + loop $for-loop|05 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $for-loop|05 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $for-loop|05 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|07 - local.get $0 - i32.const 10 - i32.lt_s if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|07 + i32.const 0 + i32.const 1056 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.const 10 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|08 + local.set $0 + loop $for-loop|07 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|07 + end + end local.get $0 i32.const 10 - i32.lt_s + i32.ne if + i32.const 0 + i32.const 1056 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|08 local.get $0 - i32.const 2 - i32.ge_s + i32.const 10 + i32.lt_s if - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 10 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.add - local.get $2 - local.get $0 + local.get $0 + i32.const 2 + i32.ge_s + if + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 + i32.const 10 i32.lt_s - select - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + if + local.get $2 + i32.const 1 + i32.add + local.get $2 + local.get $0 + local.get $1 + i32.lt_s + select + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end end end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|08 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|08 end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 28 - i32.ne - if + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 28 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17892 + 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 0 - i32.const 1056 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17892 - 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 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + 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 1508 i32.lt_s @@ -1439,30 +1283,30 @@ i32.store local.get $0 call $for/Ref#constructor - local.tee $0 + local.tee $1 i32.store - loop $for-loop|09 - local.get $0 + loop $for-loop|06 + local.get $1 if - local.get $1 + local.get $2 i32.const 1 i32.add - local.tee $1 + local.tee $2 i32.const 10 i32.eq if i32.const 0 - local.set $0 + local.set $1 else global.get $~lib/memory/__stack_pointer call $for/Ref#constructor - local.tee $0 + local.tee $1 i32.store end - br $for-loop|09 + br $for-loop|06 end end - local.get $1 + local.get $2 i32.const 10 i32.ne if @@ -1473,7 +1317,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1507,10 +1351,10 @@ call $for/Ref#constructor local.tee $0 i32.store - loop $for-loop|06 + loop $for-loop|09 call $for/Ref#constructor if - block $for-break07 + block $for-break010 local.get $1 i32.const 1 i32.add @@ -1520,13 +1364,13 @@ if i32.const 0 local.set $0 - br $for-break07 + br $for-break010 end global.get $~lib/memory/__stack_pointer call $for/Ref#constructor local.tee $0 i32.store - br $for-loop|06 + br $for-loop|09 end end end @@ -1617,7 +1461,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1650,7 +1494,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1704,17 +1548,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1727,16 +1571,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1744,15 +1588,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1779,22 +1623,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1803,19 +1647,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1827,8 +1671,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1841,12 +1685,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1860,7 +1704,7 @@ local.get $0 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 @@ -1872,16 +1716,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17892 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1472 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index 6c96a509aa..2316b256cb 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -74,12 +74,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -118,160 +118,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18220 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1760 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1764 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -308,11 +154,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -324,28 +169,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -357,19 +199,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -394,9 +236,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -404,17 +246,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -542,7 +384,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -553,7 +395,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -573,44 +415,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -620,7 +461,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -630,20 +471,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -671,7 +512,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -698,15 +539,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -718,15 +556,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -747,6 +585,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -756,7 +597,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -793,8 +634,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -953,7 +794,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1078,7 +923,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1088,7 +933,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1101,14 +946,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1138,9 +982,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1156,13 +1000,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1172,9 +1016,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1218,7 +1062,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1228,7 +1072,11 @@ end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start (local $0 i32) @@ -1339,7 +1187,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1399,11 +1247,11 @@ i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1416,16 +1264,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1434,7 +1282,7 @@ end end local.get $3 - local.get $1 + local.get $0 i32.const 16 i32.shl memory.size @@ -1473,17 +1321,17 @@ call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1492,19 +1340,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $4 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $3 - local.get $1 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1516,8 +1364,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1530,26 +1378,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $0 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 @@ -1561,23 +1409,23 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $2 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 global.set $function-call/foo global.get $~lib/memory/__stack_pointer global.get $function-call/foo - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 1680 i32.load call_indirect $0 (type $i32_=>_none) @@ -1597,9 +1445,9 @@ end global.get $~lib/memory/__stack_pointer global.get $function-call/foo - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 1 i32.const 2 i32.const 1744 @@ -1628,4 +1476,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18220 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1760 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1764 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 9174601471..b631942f37 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -106,9 +106,9 @@ (local $0 i32) (local $1 i32) i32.const 1792 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1600 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -175,7 +175,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -198,7 +198,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -208,15 +208,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -281,30 +281,6 @@ 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) @@ -341,11 +317,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -357,28 +332,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -390,19 +362,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -427,9 +399,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -437,17 +409,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -575,7 +547,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -586,7 +558,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -606,44 +578,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -653,7 +624,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -663,20 +634,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -704,7 +675,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -731,15 +702,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -751,15 +719,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -780,6 +748,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -789,7 +760,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -826,8 +797,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -986,7 +957,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1111,7 +1086,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1121,7 +1096,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1134,14 +1109,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1171,9 +1145,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1189,13 +1163,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1205,9 +1179,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1221,459 +1195,337 @@ end end ) - (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) - local.get $0 - ) - (func $function-expression/semanticallyAnonymous + (func $~lib/rt/itcms/__new (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 2196 - i32.lt_s + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 18608 - i32.const 18656 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 2064 - i32.store - local.get $0 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt end - return + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end - unreachable + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return end - local.get $0 - i32.load + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $0 + i32.eqz if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:function-expression - ) - (func $function-expression/testField - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 2032 - i32.store - local.get $5 + i32.const 16 + i32.shl i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u local.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow i32.const 0 - i32.store - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz + i32.lt_s if - memory.size - local.tee $2 - i32.const 4 - local.get $3 - i32.load offset=1568 - local.get $2 - 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.tee $0 - local.get $0 - local.get $2 - i32.lt_s - select + local.get $1 memory.grow i32.const 0 i32.lt_s if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $3 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1936 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort unreachable end end + local.get $2 local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz if i32.const 0 i32.const 1936 - i32.const 498 - i32.const 14 + i32.const 496 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 - local.get $0 - call $~lib/rt/tlsf/removeBlock + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $1 + i32.const 16 + i32.ge_u + if local.get $0 - i32.load - local.tee $2 - i32.const -4 + local.get $3 + i32.const 2 i32.and i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $3 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $0 - 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 $0 - i32.const 8 - i32.store offset=12 + i32.or + i32.store local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $4 - local.get $0 - global.get $~lib/rt/itcms/white - local.get $2 + i32.sub + i32.const 1 i32.or - i32.store offset=4 + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $0 - local.get $4 - i32.store offset=8 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const 3 + local.get $3 + i32.const -2 i32.and + i32.store local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total + i32.const 4 + i32.add local.get $0 i32.load i32.const -4 i32.and - i32.const 4 - i32.add i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.const 2032 - i32.store - local.get $0 local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - i32.const 2016 + local.get $1 i32.load - i32.const 3 + i32.const -3 i32.and - i32.eq - if - local.get $1 - 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 - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray + i32.store + end + local.get $0 + i32.const 8 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $1 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + ) + (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) + local.get $0 + ) + (func $function-expression/semanticallyAnonymous + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + if + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 2064 + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return end + return end + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $1 - i32.store offset=8 - i32.const 1 - local.get $1 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 25 - i32.ne + local.get $0 + i32.load offset=4 + local.tee $0 if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer return end - i32.const 18608 - i32.const 18656 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) - (func $start:function-expression + (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $1 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2196 i32.lt_s @@ -1931,7 +1783,119 @@ i32.store i32.const 1888 global.set $~lib/rt/itcms/fromSpace - call $function-expression/testField + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 2032 + i32.store + local.get $0 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 2032 + i32.store + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + i32.const 2016 + i32.load + i32.const 3 + i32.and + i32.eq + if + local.get $1 + 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 + i32.const 2012 + 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 + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $0 + i32.store offset=8 + i32.const 1 + local.get $0 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2036,4 +2000,23 @@ global.set $~lib/memory/__stack_pointer i32.const 2000 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 691bd94c4a..7b0fd33255 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -40,11 +40,12 @@ ) (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $1 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1228 i32.lt_s @@ -107,13 +108,13 @@ end global.get $~lib/memory/__stack_pointer global.get $function-types/i32Adder - local.tee $0 + local.tee $1 i32.store i32.const 2 global.set $~argumentsLength i32.const 2 i32.const 3 - local.get $0 + local.get $1 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 @@ -165,8 +166,6 @@ end i32.const 2 global.set $~argumentsLength - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -188,10 +187,9 @@ end unreachable end - i32.const 1056 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 1056 + local.tee $0 i32.store end i32.const 2 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 64a781b647..947f743f02 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -83,160 +83,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17900 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1472 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -273,11 +119,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -289,28 +134,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -322,19 +164,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -359,9 +201,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -369,17 +211,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -507,7 +349,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -518,7 +360,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -538,44 +380,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -585,7 +426,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -595,20 +436,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,7 +477,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -663,15 +504,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -683,15 +521,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -712,6 +550,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -721,7 +562,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -758,8 +599,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -918,7 +759,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1043,7 +888,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1053,7 +898,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1066,14 +911,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1103,9 +947,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1121,13 +965,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1137,9 +981,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1178,7 +1022,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1186,7 +1030,11 @@ end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -1225,284 +1073,441 @@ i32.const 1344 global.set $~lib/rt/itcms/fromSpace ) - (func $getter-call/test (result i32) + (func $getter-call/C#constructor (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1516 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1516 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 + global.get $~lib/memory/__stack_pointer + i32.const 1516 + i32.lt_s + if + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub local.set $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt end - global.get $~lib/rt/itcms/total - local.tee $0 local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold + i32.const 0 + i32.gt_s + br_if $do-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.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $3 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold i32.sub - i32.ne + i32.const 1024 + i32.lt_u + i32.const 10 i32.shl - i32.const 65563 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $0 + 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.tee $2 + local.get $0 + 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 - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $3 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort unreachable end end + local.get $3 local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 498 - i32.const 14 + i32.const 496 + i32.const 16 call $~lib/builtins/abort unreachable end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $4 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $4 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + 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 $0 - call $~lib/rt/tlsf/removeBlock + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add local.get $0 i32.load - local.tee $1 i32.const -4 i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $getter-call/test (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 1516 + i32.lt_s + if + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $getter-call/C#constructor + i32.store + i32.const 1456 + i32.load + call_indirect $0 (type $none_=>_i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 local.get $1 - i32.const 2 + i32.load offset=4 + i32.const -4 i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $1 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $3 + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17900 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $1 - call $~lib/rt/tlsf/insertBlock - else + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $1 - i32.const -2 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - i32.store - local.get $0 - i32.const 4 - i32.add local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1472 i32.load - i32.const -4 - i32.and + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1476 i32.add - local.tee $1 - local.get $1 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 i32.load offset=8 - local.set $4 - local.get $0 - global.get $~lib/rt/itcms/white + local.set $0 local.get $1 + local.get $2 + local.get $3 i32.or i32.store offset=4 + local.get $1 local.get $0 - local.get $4 i32.store offset=8 - local.get $4 - local.get $4 + local.get $0 + local.get $0 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 + local.get $2 local.get $1 - local.get $0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - local.get $0 - i32.const 20 - i32.add - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - i32.store - i32.const 1456 - i32.load - call_indirect $0 (type $none_=>_i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + global.get $~lib/rt/itcms/visitCount + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + global.set $~lib/rt/itcms/visitCount end - i32.const 17920 - i32.const 17968 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index a7058bf423..62063b669b 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -61,11 +61,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -77,28 +76,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -110,19 +106,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -147,9 +143,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -157,17 +153,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -295,7 +291,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -306,7 +302,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -326,44 +322,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -373,7 +368,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -383,20 +378,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -424,7 +419,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -451,15 +446,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -471,15 +463,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -500,6 +492,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -509,7 +504,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -546,8 +541,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -632,73 +627,68 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $0 i32.const 12 i32.le_u - 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 + select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -854,30 +844,13 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $1 - call $~lib/rt/tlsf/searchBlock local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if memory.size local.tee $3 - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $1 - i32.add - else - local.get $1 - end i32.const 4 local.get $0 i32.load offset=1568 @@ -888,6 +861,21 @@ i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -895,8 +883,8 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 local.get $3 i32.lt_s select @@ -904,7 +892,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -921,9 +909,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -934,11 +922,11 @@ unreachable end end - local.get $2 + local.get $1 i32.load i32.const -4 i32.and - local.get $1 + local.get $2 i32.lt_u if i32.const 0 @@ -949,13 +937,13 @@ unreachable end local.get $0 - local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $2 local.get $1 - call $~lib/rt/tlsf/prepareBlock local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 ) (func $~lib/memory/heap.alloc (param $0 i32) (result i32) global.get $~lib/rt/tlsf/ROOT @@ -1012,17 +1000,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1168,19 +1156,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1195,7 +1183,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1206,10 +1194,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1217,10 +1205,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1231,7 +1219,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1261,17 +1249,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -1286,7 +1274,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -1297,10 +1285,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1308,10 +1296,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -1322,7 +1310,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1348,17 +1336,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1373,7 +1361,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -1384,10 +1372,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1395,10 +1383,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -1409,7 +1397,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1446,131 +1434,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -1587,59 +1553,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -1656,7 +1616,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -1667,11 +1627,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -1685,17 +1645,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -1718,24 +1678,24 @@ local.get $0 local.get $2 call $~lib/rt/tlsf/allocateBlock - local.tee $6 - i32.const 4 - i32.add - local.set $2 + local.set $6 local.get $1 i32.load i32.const -4 i32.and local.set $7 block $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $6 + i32.const 4 + i32.add + local.tee $2 local.get $1 i32.const 4 i32.add - local.tee $5 + local.tee $3 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 + local.get $3 local.get $2 i32.sub local.get $7 @@ -1748,16 +1708,16 @@ i32.le_u if local.get $2 - local.get $5 + local.get $3 local.get $7 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $2 - local.get $5 + local.get $3 i32.lt_u if - local.get $5 + local.get $3 i32.const 7 i32.and local.get $2 @@ -1782,13 +1742,13 @@ i32.const 1 i32.add local.set $2 - local.get $5 - local.tee $3 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $4 - local.get $3 + local.get $5 i32.load8_u i32.store8 br $while-continue|0 @@ -1800,7 +1760,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $3 i64.load i64.store local.get $7 @@ -1811,10 +1771,10 @@ i32.const 8 i32.add local.set $2 - local.get $5 + local.get $3 i32.const 8 i32.add - local.set $5 + local.set $3 br $while-continue|1 end end @@ -1827,13 +1787,13 @@ i32.const 1 i32.add local.set $2 - local.get $5 - local.tee $3 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $4 - local.get $3 + local.get $5 i32.load8_u i32.store8 local.get $7 @@ -1844,7 +1804,7 @@ end end else - local.get $5 + local.get $3 i32.const 7 i32.and local.get $2 @@ -1862,13 +1822,13 @@ local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 local.get $7 i32.const 1 i32.sub local.tee $7 + local.get $2 i32.add - local.get $5 + local.get $3 local.get $7 i32.add i32.load8_u @@ -1881,13 +1841,13 @@ i32.const 8 i32.ge_u if - local.get $2 local.get $7 i32.const 8 i32.sub local.tee $7 + local.get $2 i32.add - local.get $5 + local.get $3 local.get $7 i32.add i64.load @@ -1899,13 +1859,13 @@ loop $while-continue|5 local.get $7 if - local.get $2 local.get $7 i32.const 1 i32.sub local.tee $7 + local.get $2 i32.add - local.get $5 + local.get $3 local.get $7 i32.add i32.load8_u @@ -1955,54 +1915,53 @@ else block $__inlined_func$~lib/rt/tlsf/reallocateBlock (result i32) global.get $~lib/rt/tlsf/ROOT - local.set $3 + local.set $2 local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.set $2 + local.set $6 block $folding-inner0 local.get $1 - local.tee $0 call $~lib/rt/tlsf/prepareSize - local.tee $1 - local.get $2 + local.tee $4 + local.get $6 i32.load - local.tee $5 + local.tee $0 i32.const -4 i32.and - local.tee $4 + local.tee $5 i32.le_u br_if $folding-inner0 - local.get $2 + local.get $6 i32.const 4 i32.add - local.get $2 + local.get $6 i32.load i32.const -4 i32.and i32.add - local.tee $6 + local.tee $3 i32.load local.tee $7 i32.const 1 i32.and if - local.get $1 local.get $4 + local.get $5 i32.const 4 i32.add local.get $7 i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.le_u if + local.get $2 local.get $3 - local.get $6 call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $4 + local.get $6 local.get $5 + local.get $0 i32.const 3 i32.and i32.or @@ -2010,17 +1969,17 @@ br $folding-inner0 end end - local.get $3 local.get $2 - local.get $0 + local.get $6 + local.get $1 call $~lib/rt/tlsf/moveBlock br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $3 local.get $2 - local.get $1 + local.get $6 + local.get $4 call $~lib/rt/tlsf/prepareBlock - local.get $2 + local.get $6 end end i32.const 4 diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 7ac15c9898..4c5afbfd43 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -48,9 +48,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -117,7 +117,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -140,7 +140,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -150,15 +150,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -223,30 +223,6 @@ 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) @@ -283,11 +259,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -299,28 +274,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -332,19 +304,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -369,9 +341,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -379,17 +351,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -517,7 +489,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -528,7 +500,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -548,44 +520,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -595,7 +566,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -605,20 +576,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -646,7 +617,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -673,15 +644,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -693,15 +661,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -722,6 +690,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -731,7 +702,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -768,8 +739,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -928,7 +899,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1053,7 +1028,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1063,7 +1038,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1076,14 +1051,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,9 +1087,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1131,13 +1105,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1147,9 +1121,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1219,17 +1193,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1242,16 +1216,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1259,15 +1233,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1294,12 +1268,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1309,7 +1283,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1318,19 +1292,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1360,8 +1334,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1390,89 +1364,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1499,7 +1418,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -1595,11 +1514,11 @@ ) (func $export:implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1704,9 +1623,12 @@ local.get $0 local.get $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -1714,11 +1636,11 @@ ) (func $export:implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1753,9 +1675,12 @@ local.get $0 local.get $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1774,4 +1699,72 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 + ) ) diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index e0719f3a8f..53d477f058 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -72,11 +72,11 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2000 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -143,7 +143,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -166,7 +166,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -176,15 +176,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -249,30 +249,6 @@ 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) @@ -309,11 +285,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -325,28 +300,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -358,19 +330,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -395,9 +367,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -405,17 +377,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -543,7 +515,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -554,7 +526,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -574,44 +546,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -621,7 +592,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -631,20 +602,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -672,7 +643,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -699,15 +670,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -719,15 +687,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -748,6 +716,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -757,7 +728,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -794,8 +765,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -954,7 +925,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1079,7 +1054,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1089,7 +1064,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1102,14 +1077,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1134,56 +1108,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1284,12 +1255,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1305,14 +1276,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1323,18 +1294,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1345,71 +1315,67 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $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.tee $2 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1417,15 +1383,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1453,12 +1419,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1472,7 +1438,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1482,7 +1448,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1500,12 +1466,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1535,8 +1501,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1565,19 +1531,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1586,18 +1552,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1606,10 +1572,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1618,97 +1584,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1740,7 +1706,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1755,17 +1721,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1911,19 +1877,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1938,7 +1904,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1949,10 +1915,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1960,10 +1926,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1974,7 +1940,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2004,17 +1970,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2029,7 +1995,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2040,10 +2006,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2051,10 +2017,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2065,7 +2031,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2091,17 +2057,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2116,7 +2082,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2127,10 +2093,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2138,10 +2104,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2152,7 +2118,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2189,131 +2155,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 i32.const 8 @@ -2330,59 +2274,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2399,7 +2337,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2410,11 +2348,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2428,17 +2366,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2452,66 +2390,6 @@ i32.store8 end ) - (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 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 @@ -2521,93 +2399,96 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $start:infer-array (local $0 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 2212 - i32.lt_s - if - i32.const 18624 - i32.const 18672 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 18596 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 1056 - call $~lib/rt/__newArray - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1536 - call $~lib/rt/__newArray - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 5 - i32.const 1584 - call $~lib/rt/__newArray - local.tee $0 - i32.store block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2212 + i32.lt_s + if + i32.const 18624 + i32.const 18672 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 18596 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 1056 + call $~lib/rt/__newArray + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 4 + i32.const 1536 + call $~lib/rt/__newArray + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 5 + i32.const 1584 + call $~lib/rt/__newArray + local.tee $0 + i32.store local.get $0 i32.load offset=12 i32.const 1 @@ -2652,11 +2533,11 @@ drop global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $2 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2665,29 +2546,29 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $3 i32.const 0 - local.get $1 - call $~lib/array/Array#__uset local.get $0 + call $~lib/array/Array#__uset + local.get $3 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__uset - local.get $0 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $1 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $2 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2696,25 +2577,25 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.load offset=4 i32.store offset=8 - local.get $0 + local.get $3 i32.const 0 - local.get $1 - call $~lib/array/Array#__uset local.get $0 + call $~lib/array/Array#__uset + local.get $3 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__uset - local.get $0 + local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $1 + local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2723,21 +2604,21 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $2 i32.const 0 - local.get $1 - call $~lib/array/Array#__uset local.get $0 + call $~lib/array/Array#__uset + local.get $2 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $0 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -2781,13 +2662,13 @@ i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.const 1 i32.const 2 @@ -2795,7 +2676,7 @@ i32.const 1936 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.const 1 i32.const 1 i32.const 2 @@ -2803,7 +2684,7 @@ i32.const 1968 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 @@ -2822,30 +2703,20 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 + block $folding-inner2 + block $folding-inner1 block $invalid block $infer-array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end return @@ -2853,42 +2724,49 @@ unreachable end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.load - local.tee $0 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start call $start:infer-array @@ -2916,16 +2794,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $7 i32.const 0 i32.store - local.get $6 local.get $0 local.get $1 i32.shl - local.tee $9 - local.set $8 - local.get $9 + local.tee $8 + local.set $9 + local.get $8 i32.const 0 call $~lib/rt/itcms/__new local.set $6 @@ -2940,10 +2817,10 @@ local.get $3 local.get $1 i32.sub - local.get $8 + local.get $9 i32.sub i32.const 0 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.sub @@ -2951,7 +2828,7 @@ if local.get $1 local.get $3 - local.get $8 + local.get $9 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -2972,13 +2849,13 @@ i32.const 7 i32.and if - local.get $8 + local.get $9 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 + local.set $9 local.get $1 local.tee $4 i32.const 1 @@ -2997,7 +2874,7 @@ end end loop $while-continue|1 - local.get $8 + local.get $9 i32.const 8 i32.ge_u if @@ -3005,10 +2882,10 @@ local.get $3 i64.load i64.store - local.get $8 + local.get $9 i32.const 8 i32.sub - local.set $8 + local.set $9 local.get $1 i32.const 8 i32.add @@ -3022,7 +2899,7 @@ end end loop $while-continue|2 - local.get $8 + local.get $9 if local.get $1 local.tee $4 @@ -3038,10 +2915,10 @@ local.get $5 i32.load8_u i32.store8 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 + local.set $9 br $while-continue|2 end end @@ -3056,22 +2933,22 @@ if loop $while-continue|3 local.get $1 - local.get $8 + local.get $9 i32.add i32.const 7 i32.and if - local.get $8 + local.get $9 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.tee $8 + local.tee $9 i32.add local.get $3 - local.get $8 + local.get $9 i32.add i32.load8_u i32.store8 @@ -3079,18 +2956,18 @@ end end loop $while-continue|4 - local.get $8 + local.get $9 i32.const 8 i32.ge_u if local.get $1 - local.get $8 + local.get $9 i32.const 8 i32.sub - local.tee $8 + local.tee $9 i32.add local.get $3 - local.get $8 + local.get $9 i32.add i64.load i64.store @@ -3099,16 +2976,16 @@ end end loop $while-continue|5 - local.get $8 + local.get $9 if local.get $1 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.tee $8 + local.tee $9 i32.add local.get $3 - local.get $8 + local.get $9 i32.add i32.load8_u i32.store8 @@ -3118,6 +2995,7 @@ end end end + local.get $7 local.get $6 i32.store i32.const 16 @@ -3126,15 +3004,18 @@ local.tee $1 local.get $6 i32.store - local.get $1 local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 local.get $6 i32.store offset=4 local.get $1 - local.get $9 + local.get $8 i32.store offset=8 local.get $1 local.get $0 @@ -3178,4 +3059,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $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 + ) ) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 74adc9c662..646bef4e1a 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -1,12 +1,12 @@ (module (type $none_=>_none (func)) (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -62,11 +62,11 @@ (local $0 i32) (local $1 i32) i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1424 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1232 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -105,160 +105,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18068 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1616 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1424 - i32.const 1488 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1620 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -295,11 +141,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -311,28 +156,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -344,19 +186,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -381,9 +223,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -391,17 +233,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -529,7 +371,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +382,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +402,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -607,7 +448,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +458,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -658,7 +499,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -685,15 +526,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -705,15 +543,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -734,6 +572,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +584,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +621,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -940,7 +781,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1065,7 +910,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1075,7 +920,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1088,14 +933,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1125,9 +969,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1143,13 +987,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1159,9 +1003,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1175,111 +1019,363 @@ end end ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $0 + 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.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $1 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 + 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 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 5 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $1 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + ) (func $infer-generic/test1 (param $0 f32) (result f32) local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid - end - return + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-generic/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner1 $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end - return + unreachable end - unreachable + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 - local.get $0 + local.get $2 i32.const 1152 i32.store - local.get $0 + local.get $2 i32.const 1200 i32.store offset=4 i32.const 1164 i32.load - local.set $1 + local.set $2 loop $for-loop|0 - local.get $1 + local.get $2 i32.const 1164 i32.load - local.tee $0 - local.get $0 - local.get $1 - i32.gt_s - select + local.tee $3 local.get $2 + local.get $3 + i32.lt_s + select + local.get $0 i32.gt_s if - local.get $3 + local.get $1 i32.const 1156 i32.load - local.get $2 + local.get $0 i32.const 2 i32.shl i32.add f32.load - local.get $2 + local.get $0 i32.const 1152 i32.const 1200 i32.load call_indirect $0 (type $i32_f32_i32_i32_=>_i32) - local.set $3 - local.get $2 + local.set $1 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -1316,8 +1412,8 @@ i32.const 1520 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1326,278 +1422,30 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i32.const 0 i32.store - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-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 - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $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.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1568 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $1 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $1 - local.get $2 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $1 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $1 - local.get $1 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 5 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add + call $~lib/rt/itcms/__new local.tee $0 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $0 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - local.get $1 i32.store - local.get $1 + local.get $0 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.store - local.get $3 + local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -1637,4 +1485,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18068 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1616 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1424 + i32.const 1488 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1620 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 553f6c931d..06cac7f4d7 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -51,9 +51,9 @@ (local $0 i32) (local $1 i32) i32.const 1328 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -92,160 +92,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17964 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1520 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1328 - i32.const 1392 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -282,11 +128,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +143,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +173,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +210,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +220,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +358,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +369,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +389,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +435,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +445,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +486,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +513,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +530,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +559,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +571,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +608,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +768,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +897,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +907,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +920,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,56 +951,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1257,12 +1098,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1278,14 +1119,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1296,18 +1137,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1318,54 +1158,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1373,16 +1209,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1390,15 +1226,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1426,12 +1262,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1445,7 +1281,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1455,7 +1291,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1473,12 +1309,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1508,8 +1344,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1538,19 +1374,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1559,18 +1395,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1579,10 +1415,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1591,97 +1427,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1713,7 +1549,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1739,13 +1575,17 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -1760,188 +1600,335 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $__inlined_func$start:inlining + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 2 + i32.const 1104 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 123 + i32.store + local.get $0 i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 17964 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/pinSpace + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1580 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 2 - i32.const 1104 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 123 - i32.store - local.get $0 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 17964 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/pinSpace - i32.const 1284 - i32.const 1280 - i32.store - i32.const 1288 - i32.const 1280 - i32.store - i32.const 1280 - global.set $~lib/rt/itcms/toSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1580 - i32.lt_s - br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 16 - i32.const 5 + i32.const 8 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 - i32.store - local.get $0 + i32.store offset=4 + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 95 i32.const 3 - i32.store offset=8 - local.get $0 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 + i32.const 1056 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 + i32.const 1056 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load - i32.const 1 - i32.ne + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 95 - i32.const 3 + i32.const 1200 + i32.const 147 + 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 + local.get $1 i32.load offset=4 - i32.const 2 - i32.ne + i32.const -4 + i32.and + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 17964 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $0 + local.get $1 i32.load offset=8 - i32.const 3 - i32.ne + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 97 - i32.const 3 + i32.const 1200 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1520 + i32.load + local.get $0 + i32.lt_u if - i32.const 0 - i32.const 1056 - i32.const 98 - i32.const 3 + i32.const 1328 + i32.const 1392 + i32.const 22 + i32.const 28 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.const 3 + i32.shl + i32.const 1524 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:inlining + i32.load + i32.const 32 + i32.and end - i32.const 17984 - i32.const 18032 - i32.const 1 + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 416e6b86fd..ce647effca 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -44,18 +44,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $instanceof-class/b local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -94,160 +94,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17948 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1504 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -284,11 +130,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -300,28 +145,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -333,19 +175,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -370,9 +212,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -380,17 +222,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -518,7 +360,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -529,7 +371,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -549,44 +391,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -596,7 +437,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -606,20 +447,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -647,7 +488,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -674,15 +515,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -694,15 +532,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -723,6 +561,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -732,7 +573,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -769,8 +610,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -929,7 +770,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1054,7 +899,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1064,7 +909,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1077,14 +922,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1114,9 +958,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1132,13 +976,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1148,9 +992,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1220,17 +1064,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1243,16 +1087,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1260,15 +1104,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1295,12 +1139,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1310,7 +1154,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1319,19 +1163,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1361,8 +1205,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1395,43 +1239,43 @@ (func $start:instanceof-class (local $0 i32) (local $1 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17948 - 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + memory.size + i32.const 16 + i32.shl + i32.const 17948 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1564 i32.lt_s @@ -1568,7 +1412,7 @@ br_if $__inlined_func$instanceof-class/Child~instanceof drop i32.const 1 - block $__inlined_func$~lib/rt/__instanceof6 (result i32) + block $__inlined_func$~lib/rt/__instanceof9 (result i32) local.get $1 i32.const 20 i32.sub @@ -1578,12 +1422,12 @@ i32.load i32.le_u if - loop $do-loop|07 + loop $do-loop|010 i32.const 1 local.get $0 i32.const 6 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof6 + br_if $__inlined_func$~lib/rt/__instanceof9 drop local.get $0 i32.const 3 @@ -1592,7 +1436,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|07 + br_if $do-loop|010 end end i32.const 0 @@ -1643,7 +1487,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1660,4 +1504,153 @@ (func $~start call $start:instanceof-class ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17948 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1504 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index d53529b195..280cf4e218 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -111,7 +111,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -134,7 +134,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -144,15 +144,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -217,30 +217,6 @@ 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) @@ -277,11 +253,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -293,28 +268,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -326,19 +298,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -363,9 +335,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -373,17 +345,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -511,7 +483,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -522,7 +494,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -542,44 +514,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -589,7 +560,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -599,20 +570,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -640,7 +611,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -667,15 +638,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -687,15 +655,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -716,6 +684,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -725,7 +696,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -762,8 +733,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -922,7 +893,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1047,7 +1022,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1057,7 +1032,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1070,14 +1045,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,9 +1081,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1125,13 +1099,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1141,9 +1115,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1157,463 +1131,514 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - return + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $0 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize 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/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 local.get $0 - i32.const 20 + i32.const 16 + i32.shl + i32.const 4 i32.sub - i32.load offset=4 - i32.const 3 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 16 + i32.shr_u + local.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq + memory.grow i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select + i32.lt_s if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + unreachable end end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $invalid - end - return - end - return + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable end - unreachable end local.get $0 i32.load - local.tee $0 + i32.const -4 + i32.and + i32.const 28 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable end - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 + local.tee $1 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or i32.store - memory.size - i32.const 16 - i32.shl - i32.const 18004 + local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 + 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 + i32.or i32.store - i32.const 1352 - i32.const 1344 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $3 + i32.const -2 + i32.and i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace local.get $0 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store + i32.add local.get $0 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-loop|0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $1 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/step + i32.const 8 i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $invalid end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold + return end + return end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - memory.size - local.tee $0 + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + memory.size i32.const 16 i32.shl - i32.const 4 + i32.const 18004 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.tee $3 + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace local.get $0 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 + i32.const 1456 + i32.store + local.get $0 i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + i32.const 1440 + i32.load + i32.const 3 + i32.and + i32.eq if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + 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 + i32.const 1436 + 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 + i32.const 1436 + call $~lib/rt/itcms/Object#makeGray + end + end end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $3 - local.get $4 + local.get $1 i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else + local.get $1 local.get $0 - local.get $3 - i32.const -2 - i32.and + i32.load + local.tee $1 i32.store + local.get $1 + i32.eqz + if + i32.const 1488 + i32.const 1552 + i32.const 8 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + br_if $folding-inner1 + 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 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $0 - i32.load - i32.const -4 - i32.and + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 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 $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $3 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $2 + i32.const 18032 + i32.const 18080 i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.store - local.get $0 - i32.const 1456 - i32.store - local.get $0 - i32.const 1456 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load - local.tee $1 - i32.store - local.get $1 - i32.eqz - if - i32.const 1488 - i32.const 1552 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 18032 - i32.const 18080 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index efd7f853c4..cb2cba41e8 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -45,12 +45,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -89,160 +89,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -279,11 +125,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -295,28 +140,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -328,19 +170,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -365,9 +207,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -375,17 +217,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -513,7 +355,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -524,7 +366,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -544,44 +386,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -591,7 +432,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -601,20 +442,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -642,7 +483,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -669,15 +510,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -689,15 +527,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -718,6 +556,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -727,7 +568,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -764,8 +605,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -924,7 +765,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1049,7 +894,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1059,7 +904,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1072,14 +917,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1109,9 +953,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1127,13 +971,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1143,9 +987,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1164,18 +1008,19 @@ (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 i32.const 2048 - local.set $1 + local.set $0 loop $do-loop|0 - local.get $1 + local.get $0 call $~lib/rt/itcms/step i32.sub - local.set $1 + local.set $0 global.get $~lib/rt/itcms/state i32.eqz if @@ -1191,7 +1036,7 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 + local.get $0 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1221,11 +1066,11 @@ i32.eqz if memory.size - local.tee $3 + local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $3 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1238,16 +1083,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $3 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1256,7 +1101,7 @@ end end local.get $1 - local.get $3 + local.get $0 i32.const 16 i32.shl memory.size @@ -1295,17 +1140,17 @@ call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1314,19 +1159,19 @@ local.get $0 i32.const 32 i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $1 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1338,8 +1183,8 @@ i32.const -4 i32.and i32.add - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1352,12 +1197,12 @@ i32.const 12 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 local.set $2 local.get $0 + local.get $1 global.get $~lib/rt/itcms/white - local.get $3 i32.or i32.store offset=4 local.get $0 @@ -1371,7 +1216,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1386,60 +1231,60 @@ local.get $0 i32.const 20 i32.add - local.tee $3 local.tee $2 + local.tee $0 i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 12 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 0 - local.get $2 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $0 - i32.add local.tee $1 + i32.add + local.tee $3 i32.const 0 i32.store + local.get $3 i32.const 12 - local.get $0 + local.get $1 i32.sub i32.const -4 i32.and - local.tee $2 - local.get $1 + local.tee $4 i32.add local.tee $0 i32.const 4 @@ -1447,14 +1292,14 @@ i32.const 0 i32.store block $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $4 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 local.get $0 @@ -1467,20 +1312,20 @@ i32.sub i32.const 0 i32.store - local.get $2 + local.get $4 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $1 + local.get $3 i32.const 0 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.store offset=20 - local.get $1 + local.get $3 i32.const 0 i32.store offset=24 local.get $0 @@ -1503,8 +1348,8 @@ i32.sub i32.const 0 i32.store - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.const 4 i32.and i32.const 24 @@ -1512,7 +1357,7 @@ local.tee $0 i32.add local.set $1 - local.get $2 + local.get $4 local.get $0 i32.sub local.set $0 @@ -1545,7 +1390,7 @@ end end end - local.get $3 + local.get $2 ) (func $issues/1225/normal (result i32) global.get $issues/1225/x @@ -1576,7 +1421,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1723,4 +1568,153 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 8c314a75f9..659db3d84d 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -45,13 +45,13 @@ (local $0 i32) (local $1 i32) i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1552 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -118,7 +118,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -141,7 +141,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -151,15 +151,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -224,30 +224,6 @@ 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) @@ -284,11 +260,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -300,28 +275,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -333,19 +305,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -370,9 +342,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -380,17 +352,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -518,7 +490,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -529,7 +501,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -549,44 +521,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -596,7 +567,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -606,20 +577,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -647,7 +618,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -674,15 +645,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -694,15 +662,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -723,6 +691,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -732,7 +703,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -769,8 +740,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -929,7 +900,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1054,7 +1029,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1064,7 +1039,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1077,14 +1052,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1109,56 +1083,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1306,14 +1277,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1323,17 +1294,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1349,22 +1320,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1375,11 +1346,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1474,10 +1445,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1485,7 +1452,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1496,54 +1466,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1551,16 +1517,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1569,7 +1535,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1577,9 +1543,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1590,11 +1556,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1605,12 +1571,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1623,89 +1589,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1713,7 +1679,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1721,66 +1687,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 294 - 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 - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1794,17 +1700,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1950,19 +1856,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1977,7 +1883,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1988,10 +1894,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1999,10 +1905,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2013,7 +1919,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2043,17 +1949,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2068,7 +1974,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2079,10 +1985,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2090,10 +1996,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2104,7 +2010,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2130,17 +2036,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2155,7 +2061,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2166,10 +2072,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2177,10 +2083,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2191,7 +2097,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2228,131 +2134,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2369,59 +2253,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2438,7 +2316,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2449,11 +2327,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2467,17 +2345,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2491,6 +2369,231 @@ i32.store8 end ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $1 + local.get $0 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.gt_u + if + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $5 + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + local.get $4 + ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2498,10 +2601,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $0 i32.load offset=12 local.get $1 @@ -2521,11 +2620,12 @@ local.get $1 i32.const 1 i32.add - local.tee $9 + local.tee $4 local.tee $7 local.get $0 + local.tee $3 i32.load offset=8 - local.tee $11 + local.tee $5 i32.const 2 i32.shr_u i32.gt_u @@ -2539,284 +2639,67 @@ i32.const 18 i32.const 48 call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/rt/itcms/__renew - local.get $11 - i32.const 1 - i32.shl - local.tee $6 - i32.const 1073741820 - local.get $6 - i32.const 1073741820 - i32.lt_u - select - local.tee $4 - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $6 - local.get $4 - local.get $6 - i32.gt_u - select - local.tee $10 - local.tee $12 - local.get $0 - i32.load - local.tee $8 - 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 $12 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $12 - local.get $5 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $7 - local.set $6 - local.get $12 - local.get $5 - i32.load offset=16 - local.tee $4 - local.get $4 - local.get $12 - i32.gt_u - select - local.set $12 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $6 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $6 - i32.sub - local.get $12 - i32.sub - i32.const 0 - local.get $12 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $6 - local.get $3 - local.get $12 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - local.get $6 - i32.gt_u - if - local.get $3 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $6 - i32.const 7 - i32.and - if - local.get $12 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - local.get $6 - local.tee $5 - i32.const 1 - i32.add - local.set $6 - local.get $3 - local.tee $4 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $12 - i32.const 8 - i32.ge_u - if - local.get $6 - local.get $3 - i64.load - i64.store - local.get $12 - i32.const 8 - i32.sub - local.set $12 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $12 - if - local.get $6 - local.tee $5 - i32.const 1 - i32.add - local.set $6 - local.get $3 - local.tee $4 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $6 - local.get $12 - i32.add - i32.const 7 - i32.and - if - local.get $12 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $12 - i32.const 8 - i32.ge_u - if - local.get $6 - local.get $12 - i32.const 8 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $12 - if - local.get $6 - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $7 - local.set $3 + unreachable end local.get $3 - local.get $11 + i32.load + local.tee $6 + local.get $5 + i32.const 1 + i32.shl + local.tee $8 + i32.const 1073741820 + local.get $8 + i32.const 1073741820 + i32.lt_u + select + local.tee $8 + local.get $7 + i32.const 8 + local.get $7 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $7 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $7 + call $~lib/rt/itcms/__renew + local.tee $8 + local.get $5 i32.add - local.get $10 - local.get $11 + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill - local.get $3 + local.get $6 local.get $8 i32.ne if - local.get $0 local.get $3 + local.get $8 i32.store - local.get $0 local.get $3 + local.get $8 i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $8 + if + local.get $3 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - local.get $0 - local.get $10 + local.get $3 + local.get $7 i32.store offset=8 end local.get $0 - local.get $9 + local.get $4 i32.store offset=12 end local.get $0 @@ -2827,15 +2710,21 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $start:issues/1699 (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) memory.size i32.const 16 i32.shl @@ -2878,13 +2767,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -2893,115 +2782,155 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 i32.const 0 i32.store - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $3 i32.const 0 i32.store offset=4 - local.get $0 + local.get $3 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 32 call $~lib/memory/memory.fill - local.get $0 - local.get $2 + local.get $3 + local.get $4 i32.store - local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 + local.get $4 + if + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + 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 $0 + local.get $3 i32.const 32 i32.store offset=8 - local.get $0 + local.get $3 i32.const 3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 + local.get $2 + local.get $3 i32.store call $issues/1699/MultiAssignmentTest#constructor local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $0 + local.get $3 i32.const 1 local.get $1 call $~lib/array/Array#__set - local.get $0 + local.get $3 i32.const 1 call $~lib/array/Array#__get local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $0 + local.get $3 i32.const 0 local.get $1 call $~lib/array/Array#__set - i32.const 0 - local.set $1 loop $for-loop|0 - local.get $0 + local.get $3 i32.load offset=12 - local.get $1 + local.get $0 i32.gt_s if global.get $~lib/memory/__stack_pointer call $issues/1699/MultiAssignmentTest#constructor - local.tee $2 + local.tee $1 i32.store offset=12 - local.get $1 + local.get $0 i32.const 1 i32.gt_s if + local.get $3 local.get $0 local.get $1 - local.get $2 call $~lib/array/Array#__set end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 + local.get $3 i32.const 0 call $~lib/array/Array#__get - local.get $0 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.ne @@ -3013,10 +2942,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/array/Array#__get - local.get $0 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.eq @@ -3066,44 +2995,47 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $2 + local.tee $1 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $3 + local.set $2 loop $while-continue|0 + local.get $1 local.get $2 - local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.load - local.tee $0 + local.tee $3 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -3204,4 +3136,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + 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 + ) ) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 4746759e4f..ccb97ded3c 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1171,7 +1015,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1323,7 +1167,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1377,17 +1221,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1400,16 +1244,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1417,15 +1261,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1452,22 +1296,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1476,19 +1320,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1500,8 +1344,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1514,12 +1358,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1533,7 +1377,7 @@ local.get $0 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 @@ -1545,16 +1389,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index df5214e620..86b6f8db31 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -35,13 +35,17 @@ else local.get $0 i32.const 2 - i32.ne - br_if $while-continue|0 - i32.const 1104 - i32.const 1056 - i32.const 24 - i32.const 22 - call $~lib/builtins/abort + i32.eq + if + i32.const 1104 + i32.const 1056 + i32.const 24 + i32.const 22 + call $~lib/builtins/abort + unreachable + else + br $while-continue|0 + end unreachable end end diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 54ba89cd8c..9c90698515 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -43,9 +43,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -84,160 +84,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18060 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1632 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1636 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -274,11 +120,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -290,28 +135,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -323,19 +165,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -360,9 +202,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -370,17 +212,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -508,7 +350,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -519,7 +361,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -539,44 +381,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -586,7 +427,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -596,20 +437,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -637,7 +478,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -664,15 +505,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -684,15 +522,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -713,6 +551,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -722,7 +563,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -759,8 +600,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -919,7 +760,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1044,7 +889,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1054,7 +899,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1067,14 +912,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1104,9 +948,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1122,13 +966,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1138,9 +982,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1210,17 +1054,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1233,16 +1077,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1250,15 +1094,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1285,12 +1129,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1300,7 +1144,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1309,19 +1153,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1351,8 +1195,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1404,7 +1248,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1418,11 +1262,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s @@ -1532,25 +1376,25 @@ i32.const 20 i32.sub i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1632 i32.load i32.le_u if loop $do-loop|0 i32.const 1 - local.get $2 + local.get $1 i32.const 3 i32.eq br_if $__inlined_func$~lib/rt/__instanceof drop - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1636 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 br_if $do-loop|0 end end @@ -1604,7 +1448,7 @@ local.get $1 local.get $0 i32.store offset=4 - block $__inlined_func$~lib/rt/__instanceof11 (result i32) + block $__inlined_func$~lib/rt/__instanceof14 (result i32) local.get $0 i32.const 20 i32.sub @@ -1614,12 +1458,12 @@ i32.load i32.le_u if - loop $do-loop|012 + loop $do-loop|015 i32.const 1 local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof11 + br_if $__inlined_func$~lib/rt/__instanceof14 drop local.get $1 i32.const 3 @@ -1628,7 +1472,7 @@ i32.add i32.load offset=4 local.tee $1 - br_if $do-loop|012 + br_if $do-loop|015 end end i32.const 0 @@ -1665,34 +1509,34 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - block $__inlined_func$~lib/rt/__instanceof14 (result i32) + block $__inlined_func$~lib/rt/__instanceof18 (result i32) local.get $0 i32.const 20 i32.sub i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1632 i32.load i32.le_u if - loop $do-loop|015 + loop $do-loop|019 i32.const 1 - local.get $2 + local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof14 + br_if $__inlined_func$~lib/rt/__instanceof18 drop - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1636 i32.add i32.load offset=4 - local.tee $2 - br_if $do-loop|015 + local.tee $1 + br_if $do-loop|019 end end i32.const 0 @@ -1706,7 +1550,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1714,12 +1558,12 @@ i32.add global.set $~lib/memory/__stack_pointer call $managed-cast/Cat#constructor - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1728,36 +1572,36 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $0 if - block $__inlined_func$~lib/rt/__instanceof17 (result i32) - local.get $1 + block $__inlined_func$~lib/rt/__instanceof22 (result i32) + local.get $0 i32.const 20 i32.sub i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1632 i32.load i32.le_u if - loop $do-loop|018 + loop $do-loop|023 i32.const 1 - local.get $2 + local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof17 + br_if $__inlined_func$~lib/rt/__instanceof22 drop - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1636 i32.add i32.load offset=4 - local.tee $2 - br_if $do-loop|018 + local.tee $1 + br_if $do-loop|023 end end i32.const 0 @@ -1773,10 +1617,10 @@ end else i32.const 0 - local.set $1 + local.set $0 end + local.get $2 local.get $0 - local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1832,12 +1676,11 @@ ) (func $managed-cast/Cat#constructor (result i32) (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s @@ -1892,4 +1735,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18060 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1632 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index d58e24195f..1aaa9b9d51 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -26,17 +26,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -183,19 +183,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -210,7 +210,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $6 @@ -221,10 +221,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -232,10 +232,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -246,7 +246,7 @@ local.tee $6 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -276,17 +276,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -301,7 +301,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $6 @@ -312,10 +312,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -323,10 +323,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -337,7 +337,7 @@ local.tee $6 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -363,17 +363,17 @@ i32.load local.set $6 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -388,7 +388,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $6 @@ -399,10 +399,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -410,10 +410,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -424,7 +424,7 @@ local.tee $6 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -461,131 +461,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -602,59 +580,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -671,7 +643,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -682,11 +654,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -700,17 +672,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 21ae653cfb..decfd1403c 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -14,80 +14,41 @@ (local $4 i32) (local $5 i32) local.get $0 - block $folding-inner0 - local.get $0 + local.set $5 + local.get $0 + local.get $1 + i32.eq + if + local.get $5 + return + end + local.get $0 + local.get $1 + i32.lt_u + if local.get $1 - i32.eq - br_if $folding-inner0 + i32.const 7 + i32.and local.get $0 - local.get $1 - i32.lt_u + i32.const 7 + i32.and + i32.eq if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if local.get $2 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 + local.get $5 + return end - end - end - loop $while-continue|2 - local.get $2 - if + local.get $2 + i32.const 1 + i32.sub + local.set $2 local.get $0 local.tee $3 i32.const 1 @@ -102,85 +63,133 @@ local.get $4 i32.load8_u i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store local.get $2 - i32.const 1 + i32.const 8 i32.sub local.set $2 - br $while-continue|2 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 end end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq + end + loop $while-continue|2 + local.get $2 if - loop $while-continue|3 - local.get $0 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if local.get $2 - i32.add - i32.const 7 - i32.and + i32.eqz if - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 + local.get $5 + return end - end - loop $while-continue|4 + local.get $0 local.get $2 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $while-continue|4 - end + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end end - loop $while-continue|5 + loop $while-continue|4 local.get $2 + i32.const 8 + i32.ge_u if local.get $0 local.get $2 - i32.const 1 + i32.const 8 i32.sub local.tee $2 i32.add local.get $1 local.get $2 i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + i64.load + i64.store + br $while-continue|4 end end end + loop $while-continue|5 + local.get $2 + if + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end + local.get $5 ) (func $~start i32.const 8 diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index e439105230..d6cd1e275c 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -1,7 +1,7 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) (memory $0 1) @@ -9,14 +9,95 @@ (data (i32.const 1048) "\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") (export "memory" (memory $0)) (start $~start) - (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - local.get $2 - i32.eqz + (func $~start + i32.const 17468 + global.set $memset/dest + i32.const 17468 + i32.const 1 + i32.const 16 + call $byn-split-outlined-A$memset/memset + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.ne if - return + i32.const 0 + i32.const 1056 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=15 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $memset/dest + i32.const 1 + i32.add + i32.const 2 + i32.const 14 + call $byn-split-outlined-A$memset/memset + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=1 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=14 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=15 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $byn-split-outlined-A$memset/memset (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i64) + (local $4 i32) local.get $0 local.get $1 i32.store8 @@ -42,12 +123,12 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.sub local.get $1 i32.store8 - local.get $3 + local.get $4 i32.const 3 i32.sub local.get $1 @@ -80,7 +161,7 @@ i32.sub i32.const 3 i32.and - local.tee $3 + local.tee $4 i32.add local.tee $0 local.get $1 @@ -92,7 +173,7 @@ i32.store local.get $0 local.get $2 - local.get $3 + local.get $4 i32.sub i32.const -4 i32.and @@ -117,12 +198,12 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 12 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 8 i32.sub local.get $1 @@ -148,22 +229,22 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 28 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 24 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 20 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 16 i32.sub local.get $1 @@ -174,37 +255,37 @@ i32.and i32.const 24 i32.add - local.tee $3 + local.tee $4 i32.add local.set $0 local.get $2 - local.get $3 + local.get $4 i32.sub local.set $2 local.get $1 i64.extend_i32_u - local.tee $4 + local.tee $3 i64.const 32 i64.shl - local.get $4 + local.get $3 i64.or - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u if local.get $0 - local.get $4 + local.get $3 i64.store local.get $0 - local.get $4 + local.get $3 i64.store offset=8 local.get $0 - local.get $4 + local.get $3 i64.store offset=16 local.get $0 - local.get $4 + local.get $3 i64.store offset=24 local.get $2 i32.const 32 @@ -218,90 +299,4 @@ end end ) - (func $~start - i32.const 17468 - global.set $memset/dest - i32.const 17468 - i32.const 1 - i32.const 16 - call $memset/memset - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=15 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 1 - i32.add - i32.const 2 - i32.const 14 - call $memset/memset - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=1 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=14 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=15 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) ) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index 34913dc47e..bc6f9e6232 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -2,8 +2,8 @@ (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -46,42 +46,42 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/gen local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/ref2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/genext local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/genext2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/genext3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -120,160 +120,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17884 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -310,11 +156,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -326,28 +171,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -359,19 +201,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -396,9 +238,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -406,17 +248,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -544,7 +386,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -555,7 +397,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -575,44 +417,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -622,7 +463,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -632,20 +473,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -673,7 +514,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -700,15 +541,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -720,15 +558,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -749,6 +587,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -758,7 +599,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -795,8 +636,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -955,7 +796,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1080,7 +925,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1090,7 +935,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1103,14 +948,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1140,9 +984,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1158,13 +1002,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1174,9 +1018,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1246,17 +1090,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1269,16 +1113,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1286,15 +1130,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1321,12 +1165,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1336,7 +1180,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1345,19 +1189,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1387,8 +1231,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1442,7 +1286,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1690,4 +1534,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17884 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index a3546d088b..cdae122257 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) @@ -82,13 +82,13 @@ (local $0 i32) (local $1 i32) i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -127,160 +127,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 21068 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 4656 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 4660 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -317,11 +163,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -333,28 +178,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -366,19 +208,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -403,9 +245,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -413,17 +255,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -551,7 +393,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -562,7 +404,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -582,44 +424,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -629,7 +470,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -639,20 +480,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -680,7 +521,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -707,15 +548,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -727,15 +565,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -756,6 +594,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -765,7 +606,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -802,8 +643,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -962,7 +803,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1087,7 +932,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1097,7 +942,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1110,14 +955,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1142,56 +986,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1319,8 +1160,8 @@ br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1331,18 +1172,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $2 + local.tee $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1353,54 +1193,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub 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 + select local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $1 i32.const 4 - local.get $5 - i32.load offset=1568 local.get $4 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1409,9 +1245,9 @@ i32.const 16 i32.shr_u local.tee $3 + local.get $1 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -1425,18 +1261,18 @@ unreachable end end - local.get $5 local.get $4 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if i32.const 0 @@ -1447,7 +1283,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1461,12 +1297,12 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $1 i32.load - local.set $4 + local.set $5 local.get $2 i32.const 4 i32.add @@ -1480,47 +1316,47 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const -4 i32.and local.get $2 i32.sub - local.tee $1 + local.tee $3 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const 2 i32.and local.get $2 i32.or i32.store local.get $2 - local.get $3 + local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const -2 i32.and i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1532,37 +1368,37 @@ i32.and i32.store end - local.get $3 + local.get $1 i32.const 1 i32.store offset=12 - local.get $3 + 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 $1 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $1 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $3 + local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1570,10 +1406,10 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1585,7 +1421,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1600,12 +1436,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1617,7 +1453,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1632,25 +1468,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1660,17 +1496,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1686,22 +1522,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1712,11 +1548,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1748,7 +1584,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1858,108 +1694,107 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4684 - i32.lt_s - if - i32.const 21088 - i32.const 21136 - 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 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end + block $__inlined_func$~lib/util/number/itoa32 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + if + i32.const 21088 + i32.const 21136 + 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 1248 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 i32.sub local.get $0 local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -1967,8 +1802,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1996,7 +1831,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2010,32 +1845,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2052,29 +1886,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2120,8 +1954,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2344,22 +2177,20 @@ i32.shl i32.const 3454 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2373,7 +2204,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2389,7 +2220,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2469,22 +2300,20 @@ i32.shl i32.const 3454 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2498,7 +2327,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2514,7 +2343,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2532,17 +2361,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2688,19 +2517,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2715,7 +2544,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2726,10 +2555,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2737,10 +2566,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2751,7 +2580,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2781,17 +2610,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2806,7 +2635,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2817,10 +2646,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2828,10 +2657,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2842,7 +2671,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2868,17 +2697,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2893,7 +2722,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2904,10 +2733,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2915,10 +2744,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2929,7 +2758,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2966,131 +2795,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 i32.const 8 @@ -3107,59 +2914,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3176,7 +2977,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3187,11 +2988,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3205,17 +3006,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3423,8 +3224,6 @@ (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.eqz if @@ -3443,18 +3242,17 @@ local.get $0 local.get $1 i32.add - local.tee $3 + local.tee $2 i32.const 21 i32.le_s - i32.const 0 local.get $0 - local.get $3 + local.get $2 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -3471,61 +3269,59 @@ br $for-loop|0 end end - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3456 i32.add i32.const 3145774 i32.store - local.get $3 + local.get $2 i32.const 2 i32.add else - local.get $3 + local.get $2 i32.const 21 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3456 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.add - local.get $3 + local.get $2 i32.const 0 local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 i32.const 46 i32.store16 local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $2 i32.const 0 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $3 + local.get $2 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 3456 @@ -3542,7 +3338,7 @@ local.set $1 loop $for-loop|1 local.get $1 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -3560,7 +3356,7 @@ end end local.get $0 - local.get $3 + local.get $2 i32.add else local.get $0 @@ -3570,13 +3366,14 @@ i32.const 3458 i32.const 101 i32.store16 - local.get $3 + i32.const 3460 + local.get $2 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $1 if i32.const 0 local.get $0 @@ -3584,56 +3381,52 @@ local.set $0 end local.get $0 - local.tee $1 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 - i32.const 3460 - local.get $0 - local.get $1 i32.const 1 i32.add local.tee $0 @@ -3641,7 +3434,7 @@ i32.const 3460 i32.const 45 i32.const 43 - local.get $3 + local.get $1 select i32.store16 local.get $0 @@ -3663,20 +3456,19 @@ local.get $1 i32.const 3456 i32.add - local.tee $1 + local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $1 - local.tee $2 + local.get $3 i32.const 4 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s - local.tee $5 + local.tee $2 if i32.const 0 local.get $1 @@ -3684,63 +3476,60 @@ local.set $1 end local.get $1 - local.tee $3 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $3 - local.get $1 - local.get $3 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $3 i32.const 45 i32.const 43 - local.get $5 + local.get $2 select i32.store16 offset=4 local.get $0 @@ -3773,7 +3562,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -3784,12 +3573,11 @@ ) (func $start:number (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3875,36 +3663,36 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $2 i64.const 4294967295 i64.and - local.tee $4 + local.tee $1 i64.const 31 i64.shl - local.tee $2 - local.set $5 - local.get $3 + local.set $3 + local.get $2 i64.const 32 i64.shr_u - local.tee $3 + local.tee $2 i64.const 31 i64.shl - local.tee $6 - local.get $4 + local.get $1 + i64.const 31 + i64.shl + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u - local.get $2 i64.add - local.tee $2 + local.tee $4 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $4 i64.const 4294967295 i64.and - local.get $3 + local.get $2 i64.const 10 i64.shl i64.add @@ -3915,13 +3703,15 @@ i64.add i64.const 1 i64.sub - local.set $2 - local.get $5 + local.set $4 + local.get $2 + i64.const 31 + i64.shl + local.get $3 i64.const 32 i64.shr_u - local.get $6 i64.add - local.get $5 + local.get $3 i64.const 4294967295 i64.and i64.const 2147483647 @@ -3929,31 +3719,31 @@ i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $4 global.get $~lib/util/number/_exp_pow i32.const 2 i32.add + local.get $4 local.get $2 - local.get $3 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $1 i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $2 i64.const 4294966784 i64.mul - local.get $4 + local.get $1 i64.const 4294967295 i64.and i64.add @@ -3970,28 +3760,28 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 3456 - local.get $1 + local.get $0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $5 i32.store - local.get $1 + local.get $0 i32.const 4448 i32.store offset=4 - local.get $0 + local.get $5 i32.const 4448 call $~lib/string/String.__eq i32.eqz @@ -4007,10 +3797,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4480 i32.store offset=4 local.get $0 @@ -4029,10 +3819,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4512 i32.store offset=4 local.get $0 @@ -4051,10 +3841,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4544 i32.store offset=4 local.get $0 @@ -4077,10 +3867,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4576 i32.store offset=4 local.get $0 @@ -4103,10 +3893,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 3232 i32.store offset=4 local.get $0 @@ -4168,10 +3958,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 3232 i32.store offset=4 local.get $0 @@ -4195,10 +3985,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4576 i32.store offset=4 local.get $0 @@ -4226,4 +4016,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 21068 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 4656 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 4660 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index d97952fd9d..53b247c212 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,12 +1,11 @@ (module (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -76,7 +75,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -99,7 +98,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -109,15 +108,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -182,57 +181,57 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end + (func $object-literal/Managed#set:baz (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.store offset=4 + local.get $1 if local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 i32.const 20 i32.sub + local.tee $1 i32.load offset=4 i32.const 3 i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 local.get $0 + i32.const 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 - select 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 @@ -241,9 +240,9 @@ (local $0 i32) (local $1 i32) i32.const 1200 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1312 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -282,30 +281,6 @@ 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) (local $2 i32) (local $3 i32) @@ -342,11 +317,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -358,28 +332,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -391,19 +362,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -428,9 +399,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -438,17 +409,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -576,7 +547,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -587,7 +558,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -607,44 +578,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -654,7 +624,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -664,20 +634,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -705,7 +675,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -732,15 +702,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -752,15 +719,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -781,6 +748,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -790,7 +760,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -827,8 +797,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -943,18 +913,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1037,7 +1007,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1172,56 +1146,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1299,19 +1270,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1322,54 +1286,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1377,16 +1337,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1394,16 +1354,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1420,7 +1380,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1430,13 +1390,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1449,40 +1409,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1502,8 +1462,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1553,23 +1511,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 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/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -1577,26 +1539,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 + local.get $1 global.get $~lib/rt/itcms/white - local.get $3 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1611,7 +1573,7 @@ local.get $2 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1623,7 +1585,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1638,12 +1600,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1655,7 +1617,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1670,25 +1632,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1698,17 +1660,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1724,22 +1686,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1750,11 +1712,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1786,7 +1748,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1814,7 +1776,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1828,32 +1790,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1870,29 +1831,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1917,17 +1878,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2073,19 +2034,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2100,7 +2061,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2111,10 +2072,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2122,10 +2083,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2136,7 +2097,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2166,17 +2127,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2191,7 +2152,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2202,10 +2163,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2213,10 +2174,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2227,7 +2188,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2253,17 +2214,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2278,7 +2239,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2289,10 +2250,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2300,10 +2261,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2314,7 +2275,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2351,131 +2312,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2492,59 +2431,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2561,7 +2494,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2572,11 +2505,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2590,17 +2523,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2638,7 +2571,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2649,56 +2582,56 @@ local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=4 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=8 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=12 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=16 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=20 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=24 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=28 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2709,37 +2642,30 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start - call $start:object-literal - ) - (func $start:object-literal (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 i32.const 1156 @@ -2774,65 +2700,59 @@ i32.store i32.const 1392 global.set $~lib/rt/itcms/fromSpace - local.get $1 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 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 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 123 i32.store - local.get $0 - i32.const 1056 - i32.store offset=4 - local.get $0 + local.get $1 i32.const 1056 - call $~lib/rt/itcms/__link + call $object-literal/Managed#set:baz global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + local.get $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $0 + local.get $1 i32.load i32.const 123 i32.ne @@ -2845,15 +2765,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=4 local.tee $0 - i32.store local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + local.get $0 i32.const 1056 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -2869,312 +2789,43 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 8 - call $~lib/rt/tlsf/__alloc - local.tee $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 i32.const 0 i32.store - local.get $6 + local.get $0 i32.const 0 i32.store offset=4 - local.get $6 + local.get $0 i32.const 123 i32.store global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 1056 i32.store local.get $0 - i32.const 4 + call $~lib/string/String#substring + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.tee $3 - local.get $3 - select - local.tee $1 - i32.const 5 - local.get $3 - local.get $3 - i32.const 5 - i32.gt_u - select - local.tee $0 + i64.const 0 + i64.store local.get $0 - local.get $1 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $2 - block $__inlined_func$~lib/string/String#substring - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - i32.sub - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1568 - local.set $5 - br $__inlined_func$~lib/string/String#substring - end - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - local.get $1 - i32.eq - local.get $2 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - local.set $5 - br $__inlined_func$~lib/string/String#substring - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $0 - local.set $4 - block $~lib/util/memory/memmove|inlined.0 - local.get $5 - local.tee $0 - local.get $2 - i32.const 1056 - i32.add - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $6 - local.get $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $6 i32.load i32.const 123 i32.ne @@ -3188,14 +2839,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.store local.get $1 i32.const 1600 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1600 call $~lib/string/String.__eq i32.eqz @@ -3207,7 +2858,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3222,7 +2873,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3485,7 +3136,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3494,54 +3145,48 @@ i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=4 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $0 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=12 - local.get $2 + local.get $0 i32.const 0 i32.store - local.get $2 - i32.const 1632 - i32.store offset=4 - local.get $2 + local.get $0 i32.const 1632 - call $~lib/rt/itcms/__link - local.get $2 + call $object-literal/Managed#set:baz + local.get $0 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $0 i32.load if i32.const 0 @@ -3553,14 +3198,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $2 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.store local.get $1 i32.const 1632 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1632 call $~lib/string/String.__eq i32.eqz @@ -3572,7 +3217,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 f64.load offset=8 f64.const 0 f64.ne @@ -3597,7 +3242,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3613,51 +3258,33 @@ i32.store local.get $0 i32.const 1664 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 local.get $0 i32.const 1696 i32.store offset=4 local.get $0 i32.const 1696 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 local.get $0 i32.const 0 i32.store offset=8 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=12 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=20 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=24 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=28 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=32 local.get $0 i32.const -1 @@ -3673,39 +3300,21 @@ i32.store offset=8 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=12 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=20 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=24 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=28 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=32 global.get $~lib/memory/__stack_pointer local.get $0 @@ -3717,20 +3326,20 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 local.get $0 i32.load - local.tee $1 + local.tee $2 i32.store - local.get $2 + local.get $1 i32.const 1664 i32.store offset=4 - local.get $1 + local.get $2 i32.const 1664 call $~lib/string/String.__eq i32.eqz @@ -3743,15 +3352,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.load offset=4 - local.tee $1 + local.tee $2 i32.store - local.get $2 + local.get $1 i32.const 1696 i32.store offset=4 - local.get $1 + local.get $2 i32.const 1696 call $~lib/string/String.__eq i32.eqz @@ -3897,23 +3506,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|08 + loop $while-continue|0 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|08 + br $while-continue|0 end end end call $~lib/rt/itcms/step drop - loop $while-continue|19 + loop $while-continue|1 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|19 + br $while-continue|1 end end global.get $~lib/rt/itcms/total @@ -3939,4 +3548,360 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/string/String#substring (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 18176 + i32.const 18224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 5 + local.get $0 + local.get $0 + i32.const 5 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + local.get $3 + i32.sub + local.tee $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1568 + return + end + i32.const 0 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.eq + local.get $3 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + return + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $0 + local.get $3 + i32.const 1056 + i32.add + local.tee $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $5 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index df70d58d8c..4568d4669d 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,18 +42,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $optional-typeparameters/tDerived local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -92,160 +92,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17868 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -282,11 +128,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +143,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +173,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +210,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +220,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +358,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +369,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +389,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +435,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +445,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +486,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +513,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +530,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +559,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +571,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +608,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +768,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +897,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +907,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +920,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1112,9 +956,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1130,13 +974,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1146,9 +990,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1218,17 +1062,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1241,16 +1085,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1258,15 +1102,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1293,12 +1137,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1308,7 +1152,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1161,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1359,8 +1203,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1412,7 +1256,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1424,11 +1268,11 @@ ) (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1493,9 +1337,10 @@ local.get $0 global.set $optional-typeparameters/tConcrete global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $optional-typeparameters/tConcrete i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1519,9 +1364,10 @@ local.get $0 global.set $optional-typeparameters/tDerived global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $optional-typeparameters/tDerived i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1534,4 +1380,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17868 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index 2b4310e1c7..3c74c1a97d 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -125,12 +125,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -169,160 +169,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17916 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -359,11 +205,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -375,28 +220,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -408,19 +250,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -445,9 +287,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -455,17 +297,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -593,7 +435,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -604,7 +446,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -624,44 +466,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -671,7 +512,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -681,20 +522,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -722,7 +563,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -749,15 +590,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -769,15 +607,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -798,6 +636,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -807,7 +648,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -844,8 +685,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1004,7 +845,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1129,7 +974,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1139,7 +984,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1152,14 +997,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1189,9 +1033,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1207,13 +1051,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1223,9 +1067,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1295,17 +1139,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1318,16 +1162,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1335,15 +1179,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1370,12 +1214,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1385,7 +1229,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1394,19 +1238,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1436,8 +1280,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1466,34 +1310,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1546,7 +1390,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1799,11 +1643,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.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 @@ -1866,4 +1710,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17916 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 4c61049979..f96cd48ccd 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -75,23 +75,23 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rereexport/exportsNamespaceCar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $reexport/car local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -131,160 +131,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17956 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1536 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -321,11 +167,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -337,28 +182,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -370,19 +212,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -407,9 +249,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -417,17 +259,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -555,7 +397,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -566,7 +408,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -586,44 +428,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -633,7 +474,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -643,20 +484,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -684,7 +525,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -711,15 +552,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -731,15 +569,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -760,6 +598,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -769,7 +610,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -806,8 +647,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -966,7 +807,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1091,7 +936,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1101,7 +946,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1114,14 +959,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1151,9 +995,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1169,13 +1013,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1185,9 +1029,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1230,7 +1074,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1240,11 +1084,11 @@ ) (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1572 i32.lt_s @@ -1389,7 +1233,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1443,17 +1287,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1466,16 +1310,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1483,15 +1327,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1518,22 +1362,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1542,19 +1386,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1566,8 +1410,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1580,12 +1424,12 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1599,7 +1443,7 @@ local.get $0 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 @@ -1614,46 +1458,195 @@ local.get $0 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $4 local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17956 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1536 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 9c86007b10..6d7c35b4f4 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -56,13 +56,13 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2160 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3216 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -129,7 +129,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -152,7 +152,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -162,15 +162,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -235,30 +235,6 @@ 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) @@ -295,11 +271,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -311,28 +286,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -344,19 +316,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -381,9 +353,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -391,17 +363,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -529,7 +501,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +512,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +532,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -607,7 +578,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +588,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -658,7 +629,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -685,15 +656,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -705,15 +673,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -734,6 +702,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +714,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +751,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -940,7 +911,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1065,7 +1040,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1075,7 +1050,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1088,14 +1063,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1120,56 +1094,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1270,12 +1241,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1291,14 +1262,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1309,18 +1280,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1331,71 +1301,67 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $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.tee $2 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1403,15 +1369,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1439,12 +1405,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1458,7 +1424,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1468,7 +1434,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1486,12 +1452,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1521,8 +1487,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1551,19 +1517,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1572,18 +1538,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1592,10 +1558,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1604,97 +1570,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1726,7 +1692,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (local $1 i32) @@ -1737,9 +1703,9 @@ i32.const 8 local.set $5 i32.const 1056 - local.set $3 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $1 i32.const 3 i32.and i32.const 0 @@ -1751,13 +1717,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1778,25 +1744,25 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=8 i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=12 i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -1813,17 +1779,17 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 - local.get $3 + local.get $1 i32.const 8 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 8 i32.add @@ -1834,13 +1800,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 4 i32.add @@ -1851,13 +1817,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load16_u i32.store16 - local.get $3 + local.get $1 i32.const 2 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 2 i32.add @@ -1868,7 +1834,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -1889,15 +1855,15 @@ i32.sub br_table $case0|2 $case1|2 $case2|2 $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.get $3 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 @@ -1907,15 +1873,15 @@ i32.const 1 i32.add local.set $0 - local.get $3 + local.get $1 i32.const 2 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1928,7 +1894,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=1 local.tee $2 i32.const 8 @@ -1939,9 +1905,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=5 - local.tee $1 + local.tee $3 i32.const 8 i32.shl local.get $2 @@ -1950,18 +1916,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=9 local.tee $2 i32.const 8 i32.shl - local.get $1 + local.get $3 i32.const 24 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=13 local.tee $4 i32.const 8 @@ -1971,10 +1937,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -1988,25 +1954,25 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 local.get $5 @@ -2019,7 +1985,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=2 local.tee $2 i32.const 16 @@ -2030,9 +1996,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=6 - local.tee $1 + local.tee $3 i32.const 16 i32.shl local.get $2 @@ -2041,18 +2007,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=10 local.tee $2 i32.const 16 i32.shl - local.get $1 + local.get $3 i32.const 16 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=14 local.tee $4 i32.const 16 @@ -2062,10 +2028,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2079,7 +2045,7 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 @@ -2087,13 +2053,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -2106,7 +2072,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=3 local.tee $2 i32.const 24 @@ -2117,9 +2083,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=7 - local.tee $1 + local.tee $3 i32.const 24 i32.shl local.get $2 @@ -2128,18 +2094,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=11 local.tee $2 i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 8 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=15 local.tee $4 i32.const 24 @@ -2149,10 +2115,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2171,288 +2137,238 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 - local.get $1 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 end local.get $5 i32.const 8 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 4 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 2 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2461,7 +2377,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -2575,34 +2491,33 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 - 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/utoa64 - local.get $0 - i64.eqz + block $__inlined_func$~lib/util/number/utoa64 (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 3348 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + 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 1728 - local.set $2 br $__inlined_func$~lib/util/number/utoa64 end local.get $0 @@ -2612,7 +2527,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $1 i32.const 100000 i32.lt_u @@ -2659,16 +2574,16 @@ i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 local.get $2 local.get $3 - local.get $1 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -2722,25 +2637,25 @@ i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store loop $while-continue|0 local.get $0 i64.const 100000000 i64.ge_u if - local.get $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $3 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add local.get $0 local.get $0 @@ -2751,10 +2666,10 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $3 + local.tee $4 i32.const 10000 i32.rem_u - local.tee $4 + local.tee $2 i32.const 100 i32.div_u i32.const 2 @@ -2762,7 +2677,7 @@ i32.const 1740 i32.add i64.load32_u - local.get $4 + local.get $2 i32.const 100 i32.rem_u i32.const 2 @@ -2774,15 +2689,15 @@ i64.shl i64.or i64.store - local.get $1 + local.get $3 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add - local.get $3 + local.get $4 i32.const 10000 i32.div_u local.tee $3 @@ -2808,59 +2723,46 @@ br $while-continue|0 end end - local.get $2 + local.get $1 local.get $0 i32.wrap_i64 - local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $2 ) (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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if + block $folding-inner0 + block $invalid + block $resolve-access/Container + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/__visit + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $resolve-access/Container $invalid 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 - return + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start memory.size @@ -2896,323 +2798,329 @@ i32.const 1376 global.set $~lib/rt/itcms/fromSpace ) - (func $resolve-access/arrayAccess (result i32) + (func $~lib/rt/__newArray (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (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 3348 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $6 + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + if + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + local.set $5 + i32.const 1056 + local.set $0 + block $~lib/util/memory/memmove|inlined.0 + i32.const 8 i32.const 0 - i32.store - local.get $6 - i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + local.tee $1 + i32.const 1056 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + i32.const 1048 + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - i32.const 8 - local.set $7 + i32.const -16 + i32.le_u + if + local.get $1 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 i32.const 1056 - local.set $3 - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - local.tee $0 - i32.const 1056 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - i32.const 1048 - local.get $0 - i32.sub - i32.const -16 - i32.le_u - if - local.get $0 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - i32.const 1056 - i32.lt_u + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + i32.eqz if - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $3 - local.tee $1 - i32.const 1 - i32.add - local.set $3 - local.get $2 - local.get $1 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $3 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and if - local.get $0 + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 local.tee $2 i32.const 1 i32.add - local.set $0 - local.get $3 - local.tee $1 + local.set $1 + local.get $0 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $0 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $0 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $7 - i32.const 1056 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - i32.add - local.get $7 - i32.const 1056 - i32.add - i64.load - i64.store - br $while-continue|4 - end + br $while-continue|0 end end - loop $while-continue|5 - local.get $7 + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u if + local.get $1 local.get $0 - local.get $7 - i32.const 1 + i64.load + i64.store + local.get $5 + i32.const 8 i32.sub - local.tee $7 + local.set $5 + local.get $1 + i32.const 8 i32.add - local.get $7 - i32.const 1056 + local.set $1 + local.get $0 + i32.const 8 i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + local.set $0 + br $while-continue|1 end end end + loop $while-continue|2 + local.get $5 + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $5 + i32.const 1056 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $5 + i32.const 1056 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $5 + i32.const 1056 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end - local.get $5 + end + local.get $4 + i32.store + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $4 + i32.store + local.get $4 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $4 - local.tee $0 - i32.store - i32.const 16 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 i32.const 3 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $0 - i32.store - local.get $0 + i32.and + i32.eq if - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $0 i32.const 20 i32.sub - local.tee $2 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 $3 - i32.const 20 - i32.sub - i32.load offset=4 + local.get $1 + 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.and - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + i32.and if - local.get $2 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 local.get $1 - i32.const 3 - i32.eq - select - if - local.get $2 - call $~lib/rt/itcms/Object#makeGray - end + call $~lib/rt/itcms/Object#makeGray end end end - local.get $3 - local.get $0 - 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 $6 - local.get $3 - i32.store - local.get $3 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - i64.load - call $~lib/number/U64#toString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 19760 - i32.const 19808 - i32.const 1 + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $resolve-access/arrayAccess (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 3348 + i32.lt_s + if + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/__newArray + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i64.load + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $resolve-access/Container#constructor (result i32) (local $0 i32) @@ -3290,31 +3198,31 @@ (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 3348 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $resolve-access/Container#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i64.const 1 i64.store block $__inlined_func$~lib/util/number/utoa32 (result i32) - local.get $1 + local.get $0 i64.load i32.wrap_i64 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3326,7 +3234,7 @@ 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 @@ -3337,68 +3245,68 @@ br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 local.get $2 local.get $0 - local.get $1 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3413,4 +3321,23 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 77ecbd6323..5a2bd3e666 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -3,8 +3,8 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) @@ -264,7 +264,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -278,32 +278,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -320,29 +319,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -361,28 +360,28 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-binary/bar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-binary/bar2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1632 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1440 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2240 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -421,160 +420,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 147 - 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 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 27676 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 11248 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1632 - i32.const 1696 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 11252 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -611,11 +456,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -627,28 +471,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -660,19 +501,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -697,9 +538,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -707,17 +548,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -845,7 +686,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -856,7 +697,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -876,44 +717,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -923,7 +763,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -933,20 +773,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -974,7 +814,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1001,15 +841,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1021,15 +858,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1050,6 +887,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1059,7 +899,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1096,8 +936,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1256,7 +1096,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1381,7 +1225,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1391,7 +1235,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1404,14 +1248,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1436,56 +1279,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1586,12 +1426,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1607,14 +1447,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1625,18 +1465,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1647,54 +1486,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1702,16 +1537,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1719,15 +1554,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1755,12 +1590,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1774,7 +1609,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1784,7 +1619,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1802,12 +1637,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1837,8 +1672,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1867,19 +1702,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1888,18 +1723,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1908,10 +1743,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1920,97 +1755,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -2042,7 +1877,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2152,25 +1987,25 @@ (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 11292 - i32.lt_s - if - i32.const 27696 - i32.const 27744 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (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 11292 + i32.lt_s + if + i32.const 27696 + i32.const 27744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if @@ -2179,7 +2014,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1408 - local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -2190,71 +2024,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -2262,8 +2096,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 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) @@ -2523,22 +2357,20 @@ i32.shl i32.const 9758 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2552,7 +2384,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2568,7 +2400,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2648,22 +2480,20 @@ i32.shl i32.const 9758 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2677,7 +2507,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2693,7 +2523,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2711,17 +2541,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2867,19 +2697,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2894,7 +2724,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2905,10 +2735,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2916,10 +2746,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2930,7 +2760,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2960,17 +2790,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2985,7 +2815,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2996,10 +2826,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3007,10 +2837,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3021,7 +2851,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3047,17 +2877,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3072,7 +2902,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3083,10 +2913,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3094,10 +2924,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3108,7 +2938,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3145,131 +2975,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3286,59 +3094,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3355,7 +3157,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3366,11 +3168,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3384,17 +3186,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3602,8 +3404,6 @@ (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.eqz if @@ -3622,18 +3422,17 @@ local.get $0 local.get $1 i32.add - local.tee $3 + local.tee $2 i32.const 21 i32.le_s - i32.const 0 local.get $0 - local.get $3 + local.get $2 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -3650,61 +3449,59 @@ br $for-loop|0 end end - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 9760 i32.add i32.const 3145774 i32.store - local.get $3 + local.get $2 i32.const 2 i32.add else - local.get $3 + local.get $2 i32.const 21 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 9760 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.add - local.get $3 + local.get $2 i32.const 0 local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 i32.const 46 i32.store16 local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $2 i32.const 0 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $3 + local.get $2 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 9760 @@ -3721,7 +3518,7 @@ local.set $1 loop $for-loop|1 local.get $1 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -3739,7 +3536,7 @@ end end local.get $0 - local.get $3 + local.get $2 i32.add else local.get $0 @@ -3749,21 +3546,22 @@ i32.const 9762 i32.const 101 i32.store16 - local.get $3 + i32.const 9764 + local.get $2 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $1 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) @@ -3809,10 +3607,6 @@ i32.add end end - local.set $0 - i32.const 9764 - local.get $1 - local.get $0 i32.const 1 i32.add local.tee $0 @@ -3820,7 +3614,7 @@ i32.const 9764 i32.const 45 i32.const 43 - local.get $3 + local.get $1 select i32.store16 local.get $0 @@ -3842,20 +3636,19 @@ local.get $1 i32.const 9760 i32.add - local.tee $1 + local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $1 - local.tee $2 + local.get $3 i32.const 4 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s - local.tee $5 + local.tee $2 if i32.const 0 local.get $1 @@ -3863,63 +3656,60 @@ local.set $1 end local.get $1 - local.tee $3 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $3 - local.get $1 - local.get $3 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $3 i32.const 45 i32.const 43 - local.get $5 + local.get $2 select i32.store16 offset=4 local.get $0 @@ -3934,11 +3724,11 @@ ) (func $~lib/number/F64#toString (result i32) (local $0 i64) - (local $1 i64) - (local $2 i64) + (local $1 i32) + (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) + (local $4 i64) + (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3966,36 +3756,36 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $0 + local.tee $3 i64.const 4294967295 i64.and - local.tee $1 + local.tee $0 i64.const 31 i64.shl - local.set $3 - local.get $0 + local.set $4 + local.get $3 i64.const 32 i64.shr_u - local.tee $0 + local.tee $3 i64.const 31 i64.shl - local.get $1 + local.get $0 i64.const 31 i64.shl - local.get $1 + local.get $0 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.tee $2 + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 i64.const 4294967295 i64.and - local.get $0 + local.get $3 i64.const 10 i64.shl i64.add @@ -4006,15 +3796,15 @@ i64.add i64.const 1 i64.sub - local.set $2 - local.get $0 + local.set $5 + local.get $3 i64.const 31 i64.shl - local.get $3 + local.get $4 i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 4294967295 i64.and i64.const 2147483647 @@ -4022,31 +3812,31 @@ i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 global.get $~lib/util/number/_exp_pow i32.const 3 i32.add - local.get $2 - local.get $0 + local.get $5 + local.get $3 i64.const 2147483647 i64.mul - local.get $1 + local.get $0 i64.const 2147483647 i64.mul - local.get $1 + local.get $0 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 $0 + local.get $3 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -4063,22 +3853,22 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $2 i32.store - local.get $5 + local.get $2 i32.const 9760 - local.get $4 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -4102,7 +3892,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -4118,11 +3908,12 @@ (func $start:resolve-binary (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) block $folding-inner0 + 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 11292 i32.lt_s @@ -5100,11 +4891,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 10912 @@ -5129,11 +4921,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 10944 @@ -5158,11 +4951,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 10976 @@ -5187,11 +4981,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11008 @@ -5216,11 +5011,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11040 @@ -5245,11 +5041,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11072 @@ -5274,11 +5071,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11104 @@ -5303,11 +5101,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11136 @@ -5332,11 +5131,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11168 @@ -5361,11 +5161,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11200 @@ -5390,11 +5191,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11232 @@ -5423,13 +5225,15 @@ global.set $resolve-binary/bar2 global.get $~lib/memory/__stack_pointer local.tee $0 + local.tee $1 global.get $resolve-binary/bar i32.store offset=4 - local.get $0 + local.get $1 global.get $resolve-binary/bar2 local.tee $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 global.set $resolve-binary/bar local.get $0 global.get $resolve-binary/bar @@ -5503,4 +5307,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 27676 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 11248 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1632 + i32.const 1696 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 11252 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 6f78d8f528..ea597c6070 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -2,8 +2,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) @@ -97,24 +97,24 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-elementaccess/buf local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3568 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4624 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -181,7 +181,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -204,7 +204,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -214,15 +214,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -287,30 +287,6 @@ 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) @@ -347,11 +323,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -363,28 +338,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -396,19 +368,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -433,9 +405,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -443,17 +415,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -581,7 +553,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -592,7 +564,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -612,44 +584,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -659,7 +630,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -669,20 +640,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -710,7 +681,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -737,15 +708,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -757,15 +725,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -786,6 +754,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -795,7 +766,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -832,8 +803,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -992,7 +963,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1117,7 +1092,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1127,7 +1102,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1140,14 +1115,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1172,56 +1146,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1369,14 +1340,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1386,17 +1357,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1412,22 +1383,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1438,11 +1409,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1537,10 +1508,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1548,7 +1515,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1559,54 +1529,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1614,16 +1580,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1632,7 +1598,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1640,9 +1606,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1653,11 +1619,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1668,12 +1634,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1686,89 +1652,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1776,7 +1742,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1784,61 +1750,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=8 @@ -1919,8 +1830,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2143,22 +2053,20 @@ i32.shl i32.const 1774 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2172,7 +2080,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2188,7 +2096,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2268,22 +2176,20 @@ i32.shl i32.const 1774 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2297,7 +2203,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2313,7 +2219,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2331,17 +2237,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2487,19 +2393,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2514,7 +2420,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2525,10 +2431,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2536,10 +2442,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2550,7 +2456,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2580,17 +2486,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2605,7 +2511,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2616,10 +2522,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2627,10 +2533,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2641,7 +2547,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2667,17 +2573,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2692,7 +2598,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2703,10 +2609,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2714,10 +2620,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2728,7 +2634,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2765,131 +2671,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2906,59 +2790,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2975,7 +2853,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2986,11 +2864,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3004,17 +2882,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3325,9 +3203,6 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -3346,18 +3221,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -3374,27 +3248,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -3416,19 +3289,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -3445,7 +3317,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -3463,7 +3335,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -3474,24 +3346,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -3537,20 +3408,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -3573,20 +3441,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -3594,63 +3461,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -3667,22 +3531,21 @@ (local $1 i64) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) - (local $15 i64) local.get $0 f64.const 0 f64.lt - local.tee $5 + local.tee $2 if (result f64) i32.const 1776 i32.const 45 @@ -3699,19 +3562,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 1 - local.get $2 + local.get $6 select i32.const 1075 i32.sub - local.tee $9 + local.tee $7 i32.const 1 i32.sub local.get $1 i64.const 4503599627370495 i64.and - local.get $2 + local.get $6 i32.const 0 i32.ne i64.extend_i32_u @@ -3726,11 +3589,11 @@ local.tee $3 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i32.sub - local.set $2 + local.set $8 local.get $3 - local.get $4 + local.get $6 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -3740,25 +3603,25 @@ i64.eq i32.const 1 i32.add - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 - local.get $4 + local.get $7 + local.get $6 i32.sub - local.get $2 + local.get $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $8 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $6 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -3767,9 +3630,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $7 local.get $0 - local.get $2 + local.get $7 f64.convert_i32_s f64.ne i32.add @@ -3777,18 +3640,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $7 i32.const 3 i32.shl - local.tee $4 + local.tee $8 i32.sub global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 1832 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $7 i32.const 1 i32.shl i32.const 2528 @@ -3806,77 +3669,77 @@ local.get $1 i64.const 32 i64.shr_u - local.tee $10 + local.tee $9 global.get $~lib/util/number/_frc_pow - local.tee $13 + local.tee $10 i64.const 4294967295 i64.and + local.tee $11 local.tee $1 - local.tee $6 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul i64.const 32 i64.shr_u i64.add - local.set $6 + local.set $4 global.get $~lib/util/number/_frc_plus - local.tee $7 + local.tee $1 i64.const 4294967295 i64.and - local.set $11 - local.get $7 + local.set $12 + local.get $1 i64.const 32 i64.shr_u - local.tee $14 - local.get $1 + local.tee $1 + local.get $11 i64.mul - local.get $1 local.get $11 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $7 + local.set $5 global.get $~lib/util/number/_frc_minus - local.tee $8 + local.tee $13 i64.const 4294967295 i64.and - local.set $12 - local.get $8 + local.set $14 + local.get $13 i64.const 32 i64.shr_u - local.tee $15 - local.get $1 + local.tee $13 + local.get $11 i64.mul - local.get $1 - local.get $12 + local.get $11 + local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $8 - local.get $5 + local.set $11 + local.get $2 i32.const 1 i32.shl i32.const 1776 i32.add + local.get $9 local.get $10 - local.get $13 i64.const 32 i64.shr_u - local.tee $1 + local.tee $9 local.tee $10 i64.mul - local.get $6 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $3 local.get $10 i64.mul - local.get $6 + local.get $4 i64.const 4294967295 i64.and i64.add @@ -3886,16 +3749,16 @@ i64.shr_u i64.add local.get $1 - local.get $14 + local.get $9 i64.mul - local.get $7 + local.get $5 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $11 + local.get $9 + local.get $12 i64.mul - local.get $7 + local.get $5 i64.const 4294967295 i64.and i64.add @@ -3906,24 +3769,24 @@ i64.add i64.const 1 i64.sub - local.tee $3 + local.tee $1 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $6 i32.add i32.const -64 i32.sub - local.get $3 local.get $1 - local.get $15 + local.get $9 + local.get $13 i64.mul - local.get $8 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $12 + local.get $9 + local.get $14 i64.mul - local.get $8 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -3933,40 +3796,40 @@ i64.shr_u i64.add i64.const 1 - i64.add - i64.sub - local.get $5 - call $~lib/util/number/genDigits - local.get $5 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $5 - i32.add - ) - (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 4852 - i32.lt_s - if - i32.const 21264 - i32.const 21312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/dtoa + 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/F32#toString (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + block $__inlined_func$~lib/util/number/dtoa (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 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 f64.promote_f32 local.tee $1 @@ -3978,7 +3841,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1632 - local.set $2 br $__inlined_func$~lib/util/number/dtoa end local.get $1 @@ -3996,7 +3858,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1664 - local.set $2 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -4009,30 +3870,29 @@ f64.const 0 f64.lt select - local.set $2 br $__inlined_func$~lib/util/number/dtoa end local.get $1 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 - i32.const 1776 local.get $3 + i32.const 1776 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end - local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4060,7 +3920,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -4074,32 +3934,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -4116,29 +3975,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -4214,7 +4073,7 @@ local.get $0 i32.const 255 i32.and - local.tee $1 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4225,83 +4084,93 @@ br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $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 $0 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store + local.get $0 local.get $2 local.get $1 - local.get $0 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -4311,7 +4180,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -4320,11 +4189,11 @@ (func $start:resolve-elementaccess (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 4852 i32.lt_s @@ -4469,22 +4338,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/arr local.tee $0 + global.get $resolve-elementaccess/arr + local.tee $1 i32.store offset=12 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 10 f32.add call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString @@ -4508,16 +4377,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/arr local.tee $0 + global.get $resolve-elementaccess/arr + local.tee $1 i32.store - local.get $1 local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 10 @@ -4669,22 +4538,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/buf local.tee $0 + global.get $resolve-elementaccess/buf + local.tee $1 i32.store offset=12 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 10 i32.add call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString @@ -4708,16 +4577,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/buf local.tee $0 + global.get $resolve-elementaccess/buf + local.tee $1 i32.store - local.get $1 local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 10 @@ -4755,6 +4624,8 @@ ) (func $~lib/arraybuffer/ArrayBufferView#constructor (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 @@ -4788,9 +4659,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -4812,25 +4680,72 @@ i32.const 2 local.get $1 i32.shl - local.tee $2 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 - local.get $2 + local.get $3 + local.get $4 call $~lib/memory/memory.fill local.get $0 - local.get $1 + local.get $3 i32.store + local.get $3 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $3 + 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 $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 + i32.eq + local.get $2 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $3 i32.store offset=4 local.get $0 - local.get $2 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4838,4 +4753,23 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 6ebaf38a75..9b6256d256 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -75,13 +75,13 @@ (local $0 i32) (local $1 i32) i32.const 1648 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2256 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3312 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -120,160 +120,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 19844 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 3424 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1648 - i32.const 1712 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 3428 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -310,11 +156,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -326,28 +171,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -359,19 +201,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -396,9 +238,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -406,17 +248,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -544,7 +386,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -555,7 +397,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -575,44 +417,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -622,7 +463,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -632,20 +473,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -673,7 +514,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -700,15 +541,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -720,15 +558,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -749,6 +587,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -758,7 +599,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -795,8 +636,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -955,7 +796,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1080,7 +925,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1090,7 +935,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1103,14 +948,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1135,56 +979,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1312,8 +1153,8 @@ br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1324,18 +1165,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $2 + local.tee $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1346,54 +1186,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub 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 + select local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $1 i32.const 4 - local.get $5 - i32.load offset=1568 local.get $4 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1402,9 +1238,9 @@ i32.const 16 i32.shr_u local.tee $3 + local.get $1 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -1418,18 +1254,18 @@ unreachable end end - local.get $5 local.get $4 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if i32.const 0 @@ -1440,7 +1276,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1454,12 +1290,12 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $1 i32.load - local.set $4 + local.set $5 local.get $2 i32.const 4 i32.add @@ -1473,47 +1309,47 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const -4 i32.and local.get $2 i32.sub - local.tee $1 + local.tee $3 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const 2 i32.and local.get $2 i32.or i32.store local.get $2 - local.get $3 + local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const -2 i32.and i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1525,37 +1361,37 @@ i32.and i32.store end - local.get $3 + local.get $1 i32.const 1 i32.store offset=12 - local.get $3 + 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 $1 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $1 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $3 + local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1563,10 +1399,10 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1578,7 +1414,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1593,12 +1429,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1610,7 +1446,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1625,25 +1461,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1653,17 +1489,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1679,22 +1515,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1705,11 +1541,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1741,7 +1577,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1764,13 +1600,17 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -1857,7 +1697,7 @@ i32.const 1200 i32.load call_indirect $0 (type $i32_=>_i32) - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1870,7 +1710,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/itoa32 - local.get $2 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -1878,62 +1718,62 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1424 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/number/itoa32 end i32.const 0 - local.get $2 + local.get $0 i32.sub - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 31 i32.shr_u local.tee $3 select - local.tee $0 - local.set $2 + local.tee $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -1941,32 +1781,32 @@ end local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store loop $while-continue|0 - local.get $0 + local.get $1 i32.const 10000 i32.ge_u if - local.get $0 + local.get $1 i32.const 10000 i32.rem_u local.set $4 - local.get $0 + local.get $1 i32.const 10000 i32.div_u - local.set $0 - local.get $1 + local.set $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 + local.get $0 i32.add local.get $4 i32.const 100 @@ -1991,19 +1831,19 @@ br $while-continue|0 end end - local.get $0 + local.get $1 i32.const 100 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 - i32.add local.get $0 + i32.add + local.get $1 i32.const 100 i32.rem_u i32.const 2 @@ -2012,23 +1852,23 @@ i32.add i32.load i32.store - local.get $0 + local.get $1 i32.const 100 i32.div_u - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 10 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $2 - i32.add local.get $0 + i32.add + local.get $1 i32.const 2 i32.shl i32.const 1836 @@ -2036,21 +1876,21 @@ i32.load i32.store else - local.get $1 + local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $2 - i32.add local.get $0 + i32.add + local.get $1 i32.const 48 i32.add i32.store16 end local.get $3 if - local.get $2 + local.get $0 i32.const 45 i32.store16 end @@ -2060,32 +1900,32 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 3408 i32.store offset=4 block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 - local.get $2 + local.get $0 i32.const 3408 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + local.get $0 i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $0 + local.tee $2 i32.const 3404 i32.load i32.const 1 @@ -2096,27 +1936,28 @@ block $__inlined_func$~lib/util/string/compareImpl (result i32) i32.const 3408 local.set $3 - local.get $2 + local.get $0 + local.tee $1 i32.const 7 i32.and - i32.const 1 - local.get $0 + i32.eqz + local.get $2 + local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $2 + local.get $1 i64.load local.get $3 i64.load i64.eq if - local.get $2 + local.get $1 i32.const 8 i32.add - local.set $2 + local.set $1 local.get $3 i32.const 8 i32.add @@ -2133,29 +1974,29 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 + local.get $1 i32.load16_u - local.tee $1 + local.tee $2 local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 + local.get $1 i32.const 2 i32.add - local.set $2 + local.set $1 local.get $3 i32.const 2 i32.add @@ -2189,4 +2030,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 19844 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 3424 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1648 + i32.const 1712 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 3428 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index 9bcbc08a53..fe058cc0aa 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) @@ -48,9 +48,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -89,160 +89,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17876 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -279,11 +125,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -295,28 +140,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -328,19 +170,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -365,9 +207,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -375,17 +217,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -513,7 +355,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -524,7 +366,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -544,44 +386,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -591,7 +432,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -601,20 +442,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -642,7 +483,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -669,15 +510,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -689,15 +527,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -718,6 +556,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -727,7 +568,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -764,8 +605,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -924,7 +765,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1049,7 +894,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1059,7 +904,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1072,14 +917,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1109,9 +953,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1127,13 +971,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1143,9 +987,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1215,17 +1059,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1238,16 +1082,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1255,15 +1099,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1290,12 +1134,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1305,7 +1149,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1314,19 +1158,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1356,8 +1200,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1410,7 +1254,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1458,11 +1302,11 @@ ) (func $export:resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1492 i32.lt_s @@ -1511,11 +1355,11 @@ ) (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1492 i32.lt_s @@ -1673,4 +1517,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17876 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index f3c97f501e..8cc979a005 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -41,12 +41,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -85,160 +85,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17860 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -275,11 +121,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -291,28 +136,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -324,19 +166,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -361,9 +203,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -371,17 +213,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -509,7 +351,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -520,7 +362,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -540,44 +382,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -587,7 +428,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -597,20 +438,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -638,7 +479,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -665,15 +506,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -685,15 +523,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -714,6 +552,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -723,7 +564,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -760,8 +601,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -920,7 +761,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1045,7 +890,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1055,7 +900,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1068,14 +913,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1105,9 +949,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1123,13 +967,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1139,9 +983,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1176,7 +1020,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1270,7 +1114,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1324,17 +1168,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1347,16 +1191,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1364,15 +1208,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1399,22 +1243,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1423,19 +1267,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1447,8 +1291,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1461,12 +1305,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1480,7 +1324,7 @@ local.get $0 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 @@ -1492,16 +1336,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17860 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 23f5f2986e..d6680565ff 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -75,13 +75,13 @@ (local $0 i32) (local $1 i32) i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -120,160 +120,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 20100 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 3680 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 3684 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -310,11 +156,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -326,28 +171,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -359,19 +201,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -396,9 +238,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -406,17 +248,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -544,7 +386,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -555,7 +397,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -575,44 +417,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -622,7 +463,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -632,20 +473,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -673,7 +514,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -700,15 +541,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -720,15 +558,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -749,6 +587,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -758,7 +599,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -795,8 +636,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -955,7 +796,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1080,7 +925,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1090,7 +935,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1103,14 +948,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1135,56 +979,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1285,12 +1126,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1306,14 +1147,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1324,18 +1165,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1346,54 +1186,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1401,16 +1237,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1418,15 +1254,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1454,12 +1290,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1473,7 +1309,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1483,7 +1319,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1501,12 +1337,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1536,8 +1372,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1566,19 +1402,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1587,18 +1423,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1607,10 +1443,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1619,97 +1455,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1741,32 +1577,32 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3716 - i32.lt_s - if - i32.const 20128 - i32.const 20176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (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 3716 + i32.lt_s + if + i32.const 20128 + i32.const 20176 + 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 @@ -1775,9 +1611,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 - local.set $1 br $__inlined_func$~lib/util/number/itoa32 end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.sub @@ -1785,12 +1621,10 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $3 + local.tee $2 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) @@ -1836,14 +1670,14 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $while-continue|0 local.get $0 @@ -1853,20 +1687,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $4 + local.set $3 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $4 + i32.add + local.get $3 i32.const 100 i32.div_u i32.const 2 @@ -1874,7 +1708,7 @@ i32.const 1660 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -1893,13 +1727,13 @@ i32.const 100 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 100 @@ -1919,12 +1753,12 @@ i32.const 10 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 2 @@ -1934,21 +1768,21 @@ i32.load i32.store else - local.get $2 + local.get $1 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $3 + local.get $2 if - local.get $1 + local.get $4 i32.const 45 i32.store16 end @@ -1956,8 +1790,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1985,7 +1819,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1999,32 +1833,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2041,29 +1874,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2096,7 +1929,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2110,11 +1943,11 @@ (func $start:resolve-propertyaccess (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 3716 i32.lt_s @@ -2464,4 +2297,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 20100 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 3680 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 3684 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 456b46f485..7ae264bda3 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -3,8 +3,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) @@ -79,13 +79,13 @@ (local $0 i32) (local $1 i32) i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -124,160 +124,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 21028 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 4608 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 4612 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -314,11 +160,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -330,28 +175,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -363,19 +205,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -400,9 +242,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -410,17 +252,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -548,7 +390,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -559,7 +401,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -579,44 +421,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -626,7 +467,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,20 +477,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -677,7 +518,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -704,15 +545,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -724,15 +562,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -753,6 +591,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -762,7 +603,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -799,8 +640,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -959,7 +800,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1084,7 +929,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1094,7 +939,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1107,14 +952,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1139,56 +983,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1316,8 +1157,8 @@ br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1328,18 +1169,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $2 + local.tee $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1350,54 +1190,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub 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 + select local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $1 i32.const 4 - local.get $5 - i32.load offset=1568 local.get $4 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1406,9 +1242,9 @@ i32.const 16 i32.shr_u local.tee $3 + local.get $1 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -1422,18 +1258,18 @@ unreachable end end - local.get $5 local.get $4 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if i32.const 0 @@ -1444,7 +1280,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1458,12 +1294,12 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $1 i32.load - local.set $4 + local.set $5 local.get $2 i32.const 4 i32.add @@ -1477,47 +1313,47 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const -4 i32.and local.get $2 i32.sub - local.tee $1 + local.tee $3 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const 2 i32.and local.get $2 i32.or i32.store local.get $2 - local.get $3 + local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const -2 i32.and i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1529,37 +1365,37 @@ i32.and i32.store end - local.get $3 + local.get $1 i32.const 1 i32.store offset=12 - local.get $3 + 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 $1 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $1 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $3 + local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1567,10 +1403,10 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1582,7 +1418,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1597,12 +1433,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1614,7 +1450,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1629,25 +1465,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1657,17 +1493,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1683,22 +1519,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1709,11 +1545,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1745,7 +1581,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1877,7 +1713,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1891,32 +1727,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1933,29 +1768,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2001,8 +1836,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2225,22 +2059,20 @@ i32.shl i32.const 3470 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2254,7 +2086,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2270,7 +2102,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2350,22 +2182,20 @@ i32.shl i32.const 3470 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2379,7 +2209,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2395,7 +2225,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2413,17 +2243,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2569,19 +2399,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2596,7 +2426,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2607,10 +2437,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2618,10 +2448,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2632,7 +2462,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2662,17 +2492,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2687,7 +2517,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2698,10 +2528,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2709,10 +2539,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2723,7 +2553,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2749,17 +2579,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2774,7 +2604,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2785,10 +2615,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2796,10 +2626,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2810,7 +2640,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2847,131 +2677,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2988,59 +2796,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3057,7 +2859,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3068,11 +2870,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3086,17 +2888,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3304,8 +3106,6 @@ (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.eqz if @@ -3324,18 +3124,17 @@ local.get $0 local.get $1 i32.add - local.tee $3 + local.tee $2 i32.const 21 i32.le_s - i32.const 0 local.get $0 - local.get $3 + local.get $2 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -3352,61 +3151,59 @@ br $for-loop|0 end end - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3472 i32.add i32.const 3145774 i32.store - local.get $3 + local.get $2 i32.const 2 i32.add else - local.get $3 + local.get $2 i32.const 21 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3472 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.add - local.get $3 + local.get $2 i32.const 0 local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 i32.const 46 i32.store16 local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $2 i32.const 0 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $3 + local.get $2 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 3472 @@ -3423,7 +3220,7 @@ local.set $1 loop $for-loop|1 local.get $1 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -3441,7 +3238,7 @@ end end local.get $0 - local.get $3 + local.get $2 i32.add else local.get $0 @@ -3451,13 +3248,14 @@ i32.const 3474 i32.const 101 i32.store16 - local.get $3 + i32.const 3476 + local.get $2 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $1 if i32.const 0 local.get $0 @@ -3465,56 +3263,52 @@ local.set $0 end local.get $0 - local.tee $1 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 - i32.const 3476 - local.get $0 - local.get $1 i32.const 1 i32.add local.tee $0 @@ -3522,7 +3316,7 @@ i32.const 3476 i32.const 45 i32.const 43 - local.get $3 + local.get $1 select i32.store16 local.get $0 @@ -3544,20 +3338,19 @@ local.get $1 i32.const 3472 i32.add - local.tee $1 + local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $1 - local.tee $2 + local.get $3 i32.const 4 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s - local.tee $5 + local.tee $2 if i32.const 0 local.get $1 @@ -3565,63 +3358,60 @@ local.set $1 end local.get $1 - local.tee $3 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $3 - local.get $1 - local.get $3 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $3 i32.const 45 i32.const 43 - local.get $5 + local.get $2 select i32.store16 offset=4 local.get $0 @@ -3675,34 +3465,37 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable ) (func $~start (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i64) (local $4 i64) (local $5 i64) - (local $6 i64) 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 4644 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3746,7 +3539,7 @@ global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3765,10 +3558,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 local.get $0 i32.store - local.get $1 + local.get $2 i32.const 3232 i32.store offset=4 local.get $0 @@ -3790,7 +3583,7 @@ global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3806,30 +3599,30 @@ local.tee $3 i64.const 4294967295 i64.and - local.tee $4 + local.tee $1 i64.const 31 i64.shl - local.tee $2 - local.set $5 + local.set $4 local.get $3 i64.const 32 i64.shr_u local.tee $3 i64.const 31 i64.shl - local.tee $6 - local.get $4 + local.get $1 + i64.const 31 + i64.shl + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u - local.get $2 i64.add - local.tee $2 + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 i64.const 4294967295 i64.and local.get $3 @@ -3843,13 +3636,15 @@ i64.add i64.const 1 i64.sub - local.set $2 - local.get $5 + local.set $5 + local.get $3 + i64.const 31 + i64.shl + local.get $4 i64.const 32 i64.shr_u - local.get $6 i64.add - local.get $5 + local.get $4 i64.const 4294967295 i64.and i64.const 2147483647 @@ -3857,31 +3652,31 @@ i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 global.get $~lib/util/number/_exp_pow i32.const 1 i32.add - local.get $2 + local.get $5 local.get $3 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $1 i64.const 32 i64.shr_u i64.add local.get $3 i64.const 4294966784 i64.mul - local.get $4 + local.get $1 i64.const 4294967295 i64.and i64.add @@ -3898,28 +3693,28 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 3472 - local.get $1 + local.get $0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $2 i32.store - local.get $1 + local.get $0 i32.const 4464 i32.store offset=4 - local.get $0 + local.get $2 i32.const 4464 call $~lib/string/String.__eq i32.eqz @@ -3986,4 +3781,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 21028 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 4608 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 4612 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 316609fa6b..894b816720 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -86,22 +86,22 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-unary/bar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -140,160 +140,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 20156 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 3728 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 3732 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -330,11 +176,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -346,28 +191,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -379,19 +221,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -416,9 +258,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -426,17 +268,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -564,7 +406,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -575,7 +417,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -595,44 +437,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -642,7 +483,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -652,20 +493,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -693,7 +534,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -720,15 +561,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -740,15 +578,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -769,6 +607,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -778,7 +619,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -815,8 +656,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -975,7 +816,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1100,7 +945,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1110,7 +955,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1123,14 +968,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1155,56 +999,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1305,12 +1146,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1326,14 +1167,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1344,18 +1185,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1366,54 +1206,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1421,16 +1257,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1438,15 +1274,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1474,12 +1310,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1493,7 +1329,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1503,7 +1339,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1521,12 +1357,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1556,8 +1392,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1586,19 +1422,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1607,18 +1443,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1627,10 +1463,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1639,97 +1475,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1761,32 +1597,32 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3772 - i32.lt_s - if - i32.const 20176 - i32.const 20224 - 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 + block $__inlined_func$~lib/util/number/itoa32 (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 3772 + i32.lt_s + if + i32.const 20176 + i32.const 20224 + 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 @@ -1795,9 +1631,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 - local.set $1 br $__inlined_func$~lib/util/number/itoa32 end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.sub @@ -1805,12 +1641,10 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $3 + local.tee $2 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) @@ -1856,14 +1690,14 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $while-continue|0 local.get $0 @@ -1873,20 +1707,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $4 + local.set $3 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $4 + i32.add + local.get $3 i32.const 100 i32.div_u i32.const 2 @@ -1894,7 +1728,7 @@ i32.const 1660 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -1913,13 +1747,13 @@ i32.const 100 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 100 @@ -1939,12 +1773,12 @@ i32.const 10 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 2 @@ -1954,21 +1788,21 @@ i32.load i32.store else - local.get $2 + local.get $1 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $3 + local.get $2 if - local.get $1 + local.get $4 i32.const 45 i32.store16 end @@ -1976,8 +1810,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2005,7 +1839,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2019,32 +1853,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2061,29 +1894,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2117,7 +1950,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2133,11 +1966,12 @@ (func $start:resolve-unary (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) block $folding-inner0 + 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 3772 i32.lt_s @@ -2428,15 +2262,16 @@ local.get $0 global.set $resolve-unary/foo global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $resolve-unary/foo i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3488 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3488 i32.store offset=4 i32.const 3488 @@ -2571,16 +2406,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-unary/foo local.tee $0 + global.get $resolve-unary/foo + local.tee $1 i32.store offset=16 - local.get $0 - global.set $resolve-unary/foo local.get $1 + global.set $resolve-unary/foo local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 global.get $resolve-unary/foo i32.ne if @@ -2592,16 +2427,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-unary/foo local.tee $0 + global.get $resolve-unary/foo + local.tee $1 i32.store offset=16 - local.get $0 - global.set $resolve-unary/foo local.get $1 + global.set $resolve-unary/foo local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 global.get $resolve-unary/foo i32.ne if @@ -2637,15 +2472,16 @@ local.get $0 global.set $resolve-unary/bar global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $resolve-unary/bar i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3616 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3616 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3616 i32.store offset=4 i32.const 3616 @@ -2687,11 +2523,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-unary/bar local.tee $1 + global.get $resolve-unary/bar + local.tee $2 i32.store - local.get $0 local.get $1 + local.get $2 i32.store offset=12 local.get $0 i32.const 3680 @@ -2716,11 +2553,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-unary/bar local.tee $1 + global.get $resolve-unary/bar + local.tee $2 i32.store - local.get $0 local.get $1 + local.get $2 i32.store offset=12 local.get $0 i32.const 3712 @@ -2756,4 +2594,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 20156 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 3728 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 3732 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/return.optimized.wat b/tests/compiler/return.optimized.wat index 64eb14b70d..646c3e3cd5 100644 --- a/tests/compiler/return.optimized.wat +++ b/tests/compiler/return.optimized.wat @@ -71,6 +71,10 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store + block $__inlined_func$return/testVoidReturnFunction + local.get $0 + br_if $__inlined_func$return/testVoidReturnFunction + end local.get $1 i32.load call_indirect $0 (type $none_=>_none) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index bebac269d6..d4af2b697a 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -83,160 +83,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -273,11 +119,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -289,28 +134,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -322,19 +164,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -359,9 +201,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -369,17 +211,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -507,7 +349,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -518,7 +360,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -538,44 +380,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -585,7 +426,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -595,20 +436,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,7 +477,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -663,15 +504,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -683,15 +521,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -712,6 +550,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -721,7 +562,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -758,8 +599,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -918,7 +759,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +903,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +913,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +926,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1118,9 +962,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1136,13 +980,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1152,9 +996,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1222,7 +1066,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1276,17 +1120,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1299,16 +1143,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1316,15 +1160,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1351,22 +1195,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1375,19 +1219,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1399,8 +1243,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1413,12 +1257,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1432,7 +1276,7 @@ local.get $0 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 @@ -1444,17 +1288,17 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 global.set $rt/finalize/expect global.get $~lib/rt/itcms/state i32.const 0 @@ -1521,7 +1365,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1538,4 +1382,153 @@ global.set $~started call $start:rt/finalize ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 0cb166024f..b76a919feb 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -49,42 +49,42 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/cat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/blackcat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/nullableAnimal local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/nullableCat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/nullableBlackcat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -123,160 +123,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17940 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1504 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -313,11 +159,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -329,28 +174,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -362,19 +204,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -399,9 +241,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -409,17 +251,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -547,7 +389,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -558,7 +400,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -578,44 +420,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -625,7 +466,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -635,20 +476,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -676,7 +517,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -703,15 +544,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -723,15 +561,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -752,6 +590,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -761,7 +602,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -798,8 +639,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -958,7 +799,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1083,7 +928,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1093,7 +938,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1106,14 +951,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1143,9 +987,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1161,13 +1005,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1177,9 +1021,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1249,17 +1093,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1272,16 +1116,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1289,15 +1133,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1324,12 +1168,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1339,7 +1183,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1348,19 +1192,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1390,8 +1234,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -2124,7 +1968,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2255,4 +2099,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17940 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1504 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index 6cffd17c15..36f878bfc5 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -46,13 +46,13 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1520 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -168,10 +168,10 @@ local.get $0 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $1 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 1 i32.le_u if (result i32) @@ -179,7 +179,7 @@ else i32.const 1568 i32.load - local.get $1 + local.get $2 i32.lt_u if i32.const 1248 @@ -189,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 i32.shl i32.const 1572 @@ -205,53 +205,29 @@ i32.const 2 end local.set $3 - local.get $2 + local.get $1 i32.load offset=8 - local.set $1 + local.set $2 local.get $0 - local.get $2 + local.get $1 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - 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) @@ -288,11 +264,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -304,28 +279,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -337,19 +309,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -374,9 +346,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -384,17 +356,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -522,7 +494,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +505,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +525,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -600,7 +571,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +581,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -651,7 +622,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -678,15 +649,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -698,15 +666,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -727,6 +695,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +707,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +744,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -933,7 +904,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +1033,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +1043,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +1056,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,56 +1087,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1263,12 +1234,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1284,14 +1255,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1302,18 +1273,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1324,54 +1294,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1379,16 +1345,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1396,15 +1362,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1432,12 +1398,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1451,7 +1417,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1461,7 +1427,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1479,12 +1445,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1514,8 +1480,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1544,19 +1510,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1565,18 +1531,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1585,10 +1551,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1597,97 +1563,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1719,7 +1685,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) @@ -1783,7 +1749,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -1801,33 +1767,33 @@ i32.const 1 i32.eq if - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#makeGray else - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $1 + local.set $2 + local.get $1 local.get $0 global.get $~lib/rt/itcms/white - local.get $2 i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 - local.get $2 local.get $0 + local.get $1 i32.store offset=8 end ) @@ -1886,7 +1852,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1926,4 +1892,23 @@ i32.const 1344 global.set $~lib/rt/itcms/fromSpace ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index a2c0f41a79..e36f1bfcb7 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -69,11 +69,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -85,28 +84,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -118,19 +114,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -155,9 +151,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -165,17 +161,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -303,7 +299,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -314,7 +310,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -334,44 +330,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -381,7 +376,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -391,20 +386,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -432,7 +427,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -459,15 +454,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -479,15 +471,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -508,6 +500,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -517,7 +512,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -554,8 +549,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -630,56 +625,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -774,10 +766,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -785,7 +773,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $3 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -796,54 +787,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -851,16 +838,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -869,7 +856,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -909,7 +896,7 @@ call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $4 + local.set $6 local.get $3 i32.const 4 i32.add @@ -923,17 +910,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $4 + local.get $6 i32.const 2 i32.and local.get $3 @@ -945,7 +932,7 @@ i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 @@ -956,7 +943,7 @@ call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $4 + local.get $6 i32.const -2 i32.and i32.store @@ -986,8 +973,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/tcms/white local.get $0 + global.get $~lib/rt/tcms/white i32.or i32.store offset=4 local.get $2 @@ -1130,7 +1117,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -1144,30 +1131,30 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/tcms/Object#unlink global.get $~lib/rt/tcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $1 + local.set $2 + local.get $1 local.get $0 global.get $~lib/rt/tcms/white - local.get $2 i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 - local.get $2 local.get $0 + local.get $1 i32.store offset=8 ) (func $~lib/rt/tcms/__collect @@ -1179,11 +1166,11 @@ (local $5 i32) (local $6 i32) i32.const 1056 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit i32.const 1280 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit i32.const 1376 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit global.get $~lib/rt/tcms/pinSpace local.tee $1 i32.load offset=4 @@ -1225,14 +1212,14 @@ i32.eqz local.set $4 global.get $~lib/rt/tcms/toSpace - local.tee $5 + local.tee $3 i32.load offset=4 i32.const -4 i32.and local.set $0 loop $while-continue|1 local.get $0 - local.get $5 + local.get $3 i32.ne if local.get $0 @@ -1262,14 +1249,14 @@ end end global.get $~lib/rt/tcms/fromSpace - local.tee $3 + local.tee $5 i32.load offset=4 i32.const -4 i32.and local.set $0 loop $while-continue|2 local.get $0 - local.get $3 + local.get $5 i32.ne if global.get $~lib/rt/tcms/white @@ -1326,7 +1313,7 @@ local.get $0 i32.const 4 i32.sub - local.set $2 + local.set $6 local.get $0 i32.const 15 i32.and @@ -1336,7 +1323,7 @@ if (result i32) i32.const 1 else - local.get $2 + local.get $6 i32.load i32.const 1 i32.and @@ -1349,14 +1336,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.tee $0 - local.get $0 + local.get $6 + local.get $6 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $6 call $~lib/rt/tlsf/insertBlock end end @@ -1364,65 +1350,19 @@ br $while-continue|2 end end - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.store offset=4 - local.get $3 - local.get $3 - i32.store offset=8 local.get $5 - global.set $~lib/rt/tcms/fromSpace + local.get $5 + i32.store offset=8 local.get $3 + global.set $~lib/rt/tcms/fromSpace + local.get $5 global.set $~lib/rt/tcms/toSpace local.get $4 global.set $~lib/rt/tcms/white ) - (func $~lib/rt/tcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/tcms/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/tcms/Object#unlink - global.get $~lib/rt/tcms/toSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/tcms/white - i32.eqz - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - end - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $~lib/arraybuffer/ArrayBufferView @@ -1443,7 +1383,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit end return end @@ -1475,4 +1415,45 @@ i32.const 1424 global.set $~lib/rt/tcms/toSpace ) + (func $byn-split-outlined-A$~lib/rt/tcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + 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 $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) ) diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.optimized.wat index d55fbb4dbe..2c7bfa46b4 100644 --- a/tests/compiler/rt/runtime-stub-export.optimized.wat +++ b/tests/compiler/rt/runtime-stub-export.optimized.wat @@ -41,7 +41,7 @@ local.get $0 i32.const 16 i32.add - local.tee $7 + local.tee $4 i32.const 1073741820 i32.gt_u if @@ -53,11 +53,11 @@ unreachable end global.get $~lib/rt/stub/offset - local.tee $5 + local.tee $3 i32.const 4 i32.add local.tee $2 - local.get $7 + local.get $4 i32.const 19 i32.add i32.const -16 @@ -68,19 +68,19 @@ i32.add local.tee $6 memory.size - local.tee $7 + local.tee $5 i32.const 16 i32.shl i32.const 15 i32.add i32.const -16 i32.and - local.tee $3 + local.tee $7 i32.gt_u if - local.get $7 + local.get $5 local.get $6 - local.get $3 + local.get $7 i32.sub i32.const 65535 i32.add @@ -88,16 +88,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $7 + local.get $5 local.get $7 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $7 memory.grow i32.const 0 i32.lt_s @@ -108,26 +108,25 @@ end local.get $6 global.set $~lib/rt/stub/offset - local.get $5 + local.get $3 local.get $4 i32.store local.get $2 - local.tee $3 i32.const 4 i32.sub - local.tee $7 + local.tee $3 i32.const 0 i32.store offset=4 - local.get $7 + local.get $3 i32.const 0 i32.store offset=8 - local.get $7 + local.get $3 local.get $1 i32.store offset=12 - local.get $7 + local.get $3 local.get $0 i32.store offset=16 - local.get $3 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.optimized.wat index d9bbd8322b..f232378501 100644 --- a/tests/compiler/scoped.optimized.wat +++ b/tests/compiler/scoped.optimized.wat @@ -7,8 +7,8 @@ (local $0 i32) loop $for-loop|0 local.get $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if local.get $0 i32.const 1 @@ -21,8 +21,8 @@ local.set $0 loop $for-loop|1 local.get $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if local.get $0 i32.const 1 diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index d2f990c65d..0dd19d9487 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -2,10 +2,10 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -297,38 +297,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -341,96 +341,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $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 $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + 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 $4 + 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 $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -442,7 +440,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -493,13 +491,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -508,18 +506,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -568,17 +566,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -592,9 +590,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -643,17 +641,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -667,7 +665,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -1039,11 +1037,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -1055,28 +1052,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1088,19 +1082,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1125,9 +1119,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1135,17 +1129,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1273,7 +1267,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1284,7 +1278,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1304,44 +1298,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1351,7 +1344,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1361,20 +1354,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1402,7 +1395,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1429,15 +1422,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1449,15 +1439,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1478,6 +1468,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1487,7 +1480,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1524,8 +1517,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1600,56 +1593,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) 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 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 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.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 i32.const 7 i32.sub local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1727,19 +1717,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1750,54 +1733,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1805,16 +1784,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1822,16 +1801,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1848,7 +1827,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1858,13 +1837,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1877,40 +1856,40 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1930,8 +1909,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -1975,13 +1952,12 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/process/writeString (param $0 i32) (param $1 i32) @@ -2007,21 +1983,21 @@ end local.get $1 i32.load16_u offset=6 - local.tee $5 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=4 - local.tee $3 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=2 - local.tee $2 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -2039,16 +2015,16 @@ local.get $4 i32.store i32.const 1144 - local.get $2 + local.get $5 i32.const 8 i32.shl local.get $6 i32.or - local.get $3 + local.get $2 i32.const 16 i32.shl i32.or - local.get $5 + local.get $3 i32.const 24 i32.shl i32.or @@ -2073,31 +2049,28 @@ end return end - local.get $4 - local.set $3 i32.const 0 - local.set $2 + local.set $3 local.get $1 - local.tee $5 - local.tee $4 - local.get $4 + local.tee $2 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.add - local.set $1 + local.set $5 loop $while-continue|0 - local.get $1 - local.get $4 - i32.gt_u + local.get $2 + local.get $5 + i32.lt_u if - local.get $4 + local.get $2 i32.load16_u local.tee $6 i32.const 128 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.add else @@ -2105,65 +2078,73 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 2 i32.add else - local.get $1 - local.get $4 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 local.get $6 i32.const 64512 i32.and i32.const 55296 i32.eq - select + local.get $5 + local.get $2 + i32.const 2 + i32.add + i32.gt_u + i32.and if - local.get $4 + local.get $2 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $2 + local.get $3 i32.const 4 i32.add - local.set $2 - local.get $4 + local.set $3 + local.get $2 i32.const 4 i32.add - local.set $4 + local.set $2 br $while-continue|0 end end - local.get $2 + local.get $3 i32.const 3 i32.add end end - local.set $2 - local.get $4 + local.set $3 + local.get $2 i32.const 2 i32.add - local.set $4 + local.set $2 br $while-continue|0 end end + local.get $3 + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 - local.tee $1 - call $~lib/rt/tlsf/__alloc - local.set $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $2 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 + local.get $1 local.get $4 + local.get $2 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $1 + local.get $3 i32.ne if i32.const 0 @@ -2174,10 +2155,10 @@ unreachable end i32.const 1136 - local.get $4 + local.get $2 i32.store i32.const 1140 - local.get $1 + local.get $3 i32.store local.get $0 i32.const 1136 @@ -2185,7 +2166,7 @@ i32.const 1144 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $4 + local.get $2 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2207,22 +2188,22 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 5120 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5696 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4400 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6432 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -2289,7 +2270,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2312,7 +2293,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -2322,15 +2303,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -2395,33 +2376,10 @@ 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/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -2504,7 +2462,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -2707,14 +2669,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2724,17 +2686,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2750,22 +2712,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2776,11 +2738,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2861,23 +2823,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 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/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2889,8 +2855,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2924,66 +2890,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4992 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/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 - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -3236,7 +3142,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -3244,7 +3150,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -3252,51 +3158,51 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $5 + local.get $7 i32.ne if - local.get $8 + local.get $5 i32.load offset=16 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 i32.load - local.tee $7 + local.tee $8 i32.store offset=8 local.get $2 - local.get $7 + local.get $8 i32.store local.get $2 - local.get $8 + local.get $5 i64.load offset=8 i64.store offset=8 local.get $2 - local.get $7 + local.get $8 call $~lib/util/hash/HASH<~lib/string/String> local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add - local.tee $7 + local.tee $8 i32.load i32.store offset=16 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -3304,32 +3210,38 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 24 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -3449,25 +3361,25 @@ (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 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 + block $__inlined_func$~lib/util/number/utoa64 (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 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i64.eqz if @@ -3476,7 +3388,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 6000 - local.set $2 br $__inlined_func$~lib/util/number/utoa64 end local.get $0 @@ -3486,7 +3397,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $1 i32.const 100000 i32.lt_u @@ -3533,16 +3444,16 @@ i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 local.get $2 local.get $3 - local.get $1 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -3596,25 +3507,25 @@ i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store loop $while-continue|0 local.get $0 i64.const 100000000 i64.ge_u if - local.get $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $3 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add local.get $0 local.get $0 @@ -3625,10 +3536,10 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $3 + local.tee $4 i32.const 10000 i32.rem_u - local.tee $4 + local.tee $2 i32.const 100 i32.div_u i32.const 2 @@ -3636,7 +3547,7 @@ i32.const 6012 i32.add i64.load32_u - local.get $4 + local.get $2 i32.const 100 i32.rem_u i32.const 2 @@ -3648,15 +3559,15 @@ i64.shl i64.or i64.store - local.get $1 + local.get $3 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add - local.get $3 + local.get $4 i32.const 10000 i32.div_u local.tee $3 @@ -3682,22 +3593,23 @@ br $while-continue|0 end end - local.get $2 + local.get $1 local.get $0 i32.wrap_i64 - local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) block $invalid block $~lib/map/Map<~lib/string/String,u64> block $~lib/arraybuffer/ArrayBufferView @@ -3718,26 +3630,30 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=16 i32.const 24 i32.mul local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 local.tee $0 i32.add - local.set $2 + local.set $1 loop $while-continue|0 local.get $0 - local.get $2 + local.get $1 i32.lt_u if local.get $0 @@ -3748,7 +3664,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end local.get $0 i32.const 24 @@ -3757,336 +3677,222 @@ br $while-continue|0 end end - local.get $1 - call $~lib/rt/itcms/__visit + local.get $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable ) (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std-wasi/console - ) - (func $~lib/console/console.assert (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + (local $0 i32) + (local $1 i32) + block $folding-inner0 + global.get $~started + if + return + end + i32.const 1 + global.set $~started global.get $~lib/memory/__stack_pointer - i32.const 1088 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 i32.store - i32.const 2 - i32.const 1088 + i32.const 0 + i32.const 1056 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store + i32.const 1 + i32.const 4496 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=4 + i32.const 4528 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4576 + 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 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4624 + i32.store + i32.const 1 + i32.const 4624 call $~lib/process/writeString - i32.const 2 - local.get $1 + i32.const 1 + i32.const 4576 call $~lib/process/writeString global.get $~lib/memory/__stack_pointer i32.const 4464 i32.store - i32.const 2 + i32.const 1 i32.const 4464 call $~lib/process/writeString - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/console/console.log (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 + 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 4672 + 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 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4720 + i32.store i32.const 1 + i32.const 4720 + call $~lib/process/writeString i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store - i32.const 1 - i32.const 4464 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map<~lib/string/String,u64>#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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 + i32.const 4672 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4752 + 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 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4800 + i32.store i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - loop $while-continue|0 - local.get $5 - if - local.get $5 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $4 - i32.store - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 - local.get $1 - local.tee $2 - local.get $4 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $2 - i32.const 0 - local.get $4 - select - i32.eqz - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $4 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $4 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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 - 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 $3 - local.get $4 - i32.load16_u - local.tee $7 - i32.ne - if - local.get $7 - local.get $3 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $4 - i32.const 2 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - end - i32.eqz - end - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - end - local.get $6 - i32.const -2 - i32.and - local.set $5 - 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/console/console.time (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.const 4800 + call $~lib/process/writeString + i32.const 1 + i32.const 4752 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store + i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4848 + 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 7972 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - global.get $~lib/console/timers - local.tee $1 + local.tee $0 + i32.const 0 i32.store - local.get $1 local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - if - global.get $~lib/memory/__stack_pointer - i32.const 5376 - i32.store offset=4 - i32.const 1 - i32.const 5376 - call $~lib/process/writeString - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 5440 - i32.store offset=4 - i32.const 1 - i32.const 5440 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + i32.const 4896 + i32.store + i32.const 1 + i32.const 4896 + call $~lib/process/writeString + i32.const 1 + i32.const 4848 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 + i32.const 4464 i32.store - call $~lib/process/process.hrtime - local.set $3 + i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 24356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 5044 + i32.const 5040 + i32.store + i32.const 5048 + i32.const 5040 + i32.store + i32.const 5040 + global.set $~lib/rt/itcms/pinSpace + i32.const 5076 + i32.const 5072 + i32.store + i32.const 5080 + i32.const 5072 + i32.store + i32.const 5072 + global.set $~lib/rt/itcms/toSpace + i32.const 5220 + i32.const 5216 + i32.store + i32.const 5224 + i32.const 5216 + i32.store + i32.const 5216 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4096,103 +3902,110 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - local.get $1 local.get $0 + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - local.tee $4 - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $2 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $1 if - local.get $2 - local.get $3 - i64.store offset=8 - else + local.get $0 local.get $1 - i32.load offset=16 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + if + local.get $0 local.get $1 - i32.load offset=12 - i32.eq - if - local.get $1 - local.get $1 - i32.load offset=20 - local.get $1 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $1 - i32.load offset=4 - else - local.get $1 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,u64>#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=8 - local.tee $2 - i32.store - local.get $1 - local.get $1 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 24 - i32.mul - local.get $2 - i32.add - local.tee $2 - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i64.store offset=8 - local.get $1 - local.get $1 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=16 - local.get $0 - local.get $2 - i32.store + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $~lib/console/timers + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + i32.const 4944 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + i32.const 4944 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + i32.const 4944 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 7776 + i32.store offset=4 + i32.const 7776 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 7776 + i32.store offset=4 + i32.const 7776 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 7824 + i32.store offset=4 + i32.const 7824 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7856 + i32.store offset=4 + i32.const 7856 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7888 + i32.store offset=4 + i32.const 7888 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7920 + i32.store offset=4 + i32.const 7920 + call $~lib/console/console.log global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -4206,11 +4019,9 @@ call $~lib/wasi/index/abort unreachable ) - (func $~lib/console/timeLogImpl (param $0 i32) - (local $1 i32) - (local $2 i64) + (func $~lib/console/console.assert (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 @@ -4225,72 +4036,35 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 i32.const 0 - i32.store offset=8 - local.get $1 - global.get $~lib/console/timers - local.tee $1 i32.store - local.get $1 - local.get $0 local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $1 i32.eqz if - i32.const 5696 - i32.const 5760 - i32.const 105 - i32.const 17 - call $~lib/wasi/index/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 2 + i32.const 1088 + call $~lib/process/writeString + i32.const 2 + local.get $1 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store + i32.const 2 + i32.const 4464 + call $~lib/process/writeString end - local.get $1 - i64.load offset=8 - local.set $2 - call $~lib/process/process.hrtime - local.get $2 - i64.sub - i64.const 1000000 - i64.div_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/number/U64#toString - local.tee $1 - i32.store offset=4 - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 7584 - i32.store offset=8 - i32.const 1 - i32.const 7584 - call $~lib/process/writeString - i32.const 1 - local.get $1 - call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=8 - i32.const 1 - i32.const 7616 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.timeLog (param $0 i32) - (local $1 i32) + (func $~lib/console/console.log (param $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 @@ -4305,53 +4079,30 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - global.get $~lib/console/timers - local.tee $1 + i32.const 0 i32.store - local.get $1 - local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5536 - i32.store offset=4 - i32.const 1 - i32.const 5536 - call $~lib/process/writeString - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=4 - i32.const 1 - i32.const 5616 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + i32.const 1 local.get $0 - call $~lib/console/timeLogImpl + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4464 + i32.store + i32.const 1 + i32.const 4464 + call $~lib/process/writeString + 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) - (local $1 i32) - (local $2 i32) + (func $~lib/map/Map<~lib/string/String,u64>#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) 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 @@ -4366,176 +4117,221 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5536 - i32.store offset=4 - i32.const 1 - i32.const 5536 - call $~lib/process/writeString - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 7648 - i32.store offset=4 - i32.const 1 - i32.const 7648 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $0 - call $~lib/console/timeLogImpl - global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 + i32.const 0 i32.store - local.get $1 local.get $0 + i32.load local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $0 - if - local.get $0 - local.get $0 - i32.load offset=16 - i32.const 1 - i32.or - i32.store offset=16 - local.get $1 - local.get $1 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $1 - i32.load offset=20 - local.tee $0 - local.get $0 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $1 - i32.load offset=20 - local.get $1 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + loop $while-continue|0 + local.get $5 if - local.get $1 - local.get $2 - call $~lib/map/Map<~lib/string/String,u64>#rehash + local.get $5 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $4 + i32.store + block $__inlined_func$~lib/string/String.__eq (result i32) + i32.const 1 + local.get $4 + local.get $1 + local.tee $2 + i32.eq + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $2 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $__inlined_func$~lib/string/String.__eq + drop + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $4 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $4 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $4 + i32.const 8 + i32.add + local.set $4 + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $4 + i32.load16_u + local.tee $3 + local.get $2 + i32.load16_u + local.tee $7 + i32.ne + if + local.get $3 + local.get $7 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + end + i32.eqz + end + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $6 + i32.const -2 + i32.and + local.set $5 + 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 $start:std-wasi/console - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + (func $~lib/console/console.time (param $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 7972 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 - i32.const 1056 - i32.store - i32.const 0 - i32.const 1056 - call $~lib/console/console.assert - global.get $~lib/memory/__stack_pointer - i32.const 4496 - i32.store - i32.const 1 - i32.const 4496 - call $~lib/console/console.assert - global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store offset=4 - i32.const 4528 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4576 - 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 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 + local.get $2 + global.get $~lib/console/timers + local.tee $2 i32.store + local.get $2 local.get $0 - i32.const 4624 - i32.store - i32.const 1 - i32.const 4624 - call $~lib/process/writeString - i32.const 1 - i32.const 4576 - call $~lib/process/writeString + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + if + global.get $~lib/memory/__stack_pointer + i32.const 5376 + i32.store offset=4 + i32.const 1 + i32.const 5376 + call $~lib/process/writeString + i32.const 1 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=4 + i32.const 1 + i32.const 5440 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end global.get $~lib/memory/__stack_pointer - i32.const 4464 + global.get $~lib/console/timers + local.tee $4 i32.store - i32.const 1 - i32.const 4464 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4672 - i32.store offset=4 + call $~lib/process/process.hrtime + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4545,249 +4341,378 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 0 i32.store + local.get $4 local.get $0 - i32.const 4720 - i32.store - i32.const 1 - i32.const 4720 - call $~lib/process/writeString - i32.const 1 - i32.const 4672 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store - i32.const 1 - i32.const 4464 - call $~lib/process/writeString + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + local.tee $2 + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $3 + if + local.get $3 + local.get $1 + i64.store offset=8 + else + local.get $4 + i32.load offset=16 + local.get $4 + i32.load offset=12 + i32.eq + if + local.get $4 + local.get $4 + i32.load offset=20 + local.get $4 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=8 + local.tee $5 + i32.store + local.get $4 + local.get $4 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 24 + i32.mul + local.get $5 + i32.add + local.tee $3 + local.get $0 + i32.store + local.get $0 + if + local.get $4 + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 + i64.store offset=8 + local.get $4 + local.get $4 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 + 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 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4752 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub + i32.const 8 + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4800 - i32.store - i32.const 1 - i32.const 4800 - call $~lib/process/writeString + return + end + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + ) + (func $~lib/console/timeLogImpl (param $0 i32) + (local $1 i64) + (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 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 i32.const 1 - i32.const 4752 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store i32.const 1 - i32.const 4464 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4848 - 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 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4896 - i32.store + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + global.get $~lib/console/timers + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $2 + i32.eqz + if + i32.const 5696 + i32.const 5760 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $2 + i64.load offset=8 + local.set $1 + call $~lib/process/process.hrtime + local.get $1 + i64.sub + i64.const 1000000 + i64.div_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/number/U64#toString + local.tee $2 + i32.store offset=4 + i32.const 1 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7584 + i32.store offset=8 + i32.const 1 + i32.const 7584 + call $~lib/process/writeString + i32.const 1 + local.get $2 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=8 + i32.const 1 + i32.const 7616 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeLog (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 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 i32.const 1 - i32.const 4896 - call $~lib/process/writeString i32.const 1 - i32.const 4848 - call $~lib/process/writeString + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store + i32.const 5536 + i32.store offset=4 i32.const 1 - i32.const 4464 + i32.const 5536 call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 24356 - i32.sub i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 5044 - i32.const 5040 - i32.store - i32.const 5048 - i32.const 5040 - i32.store - i32.const 5040 - global.set $~lib/rt/itcms/pinSpace - i32.const 5076 - i32.const 5072 - i32.store - i32.const 5080 - i32.const 5072 - i32.store - i32.const 5072 - global.set $~lib/rt/itcms/toSpace - i32.const 5220 - i32.const 5216 - i32.store - i32.const 5224 - i32.const 5216 - i32.store - i32.const 5216 - 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 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 4 - i32.store offset=12 local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $~lib/console/timers - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - i32.const 4944 - call $~lib/console/console.time - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - i32.const 4944 - call $~lib/console/console.timeLog - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - i32.const 4944 - call $~lib/console/console.timeEnd - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/console/console.timeLog - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/console/console.timeEnd - global.get $~lib/memory/__stack_pointer - i32.const 7776 - i32.store offset=4 - i32.const 7776 - call $~lib/console/console.time - global.get $~lib/memory/__stack_pointer - i32.const 7776 - i32.store offset=4 - i32.const 7776 - call $~lib/console/console.time + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7824 + i32.const 5616 i32.store offset=4 - i32.const 7824 - call $~lib/console/console.log + i32.const 1 + i32.const 5616 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7856 - i32.store offset=4 - i32.const 7856 - call $~lib/console/console.log + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + call $~lib/console/timeLogImpl + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeEnd (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 7888 + i32.const 5536 i32.store offset=4 - i32.const 7888 - call $~lib/console/console.log + i32.const 1 + i32.const 5536 + call $~lib/process/writeString + i32.const 1 + local.get $0 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7920 + i32.const 7648 i32.store offset=4 - i32.const 7920 - call $~lib/console/console.log + i32.const 1 + i32.const 7648 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 24384 - i32.const 24432 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable + local.get $0 + call $~lib/console/timeLogImpl + global.get $~lib/memory/__stack_pointer + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $0 + if + local.get $0 + local.get $0 + i32.load offset=16 + i32.const 1 + i32.or + i32.store offset=16 + local.get $1 + local.get $1 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $1 + i32.load offset=20 + local.tee $0 + local.get $0 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $1 + i32.load offset=20 + local.get $1 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $1 + local.get $2 + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) @@ -4835,4 +4760,126 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4992 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/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 $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4992 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/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 + ) ) diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index b0eee389d7..b9bced5e12 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -253,38 +253,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -297,96 +297,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $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 $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + 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 $4 + 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 $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -398,7 +396,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -449,13 +447,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -464,18 +462,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -524,17 +522,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -548,9 +546,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -599,17 +597,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -623,7 +621,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -649,38 +647,38 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/crypto/buf local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/crypto/b1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/crypto/b2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5504 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6560 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -747,7 +745,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -770,7 +768,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -780,15 +778,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -853,30 +851,6 @@ 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) @@ -913,11 +887,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -929,28 +902,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -962,19 +932,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -999,9 +969,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1009,17 +979,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1147,7 +1117,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1158,7 +1128,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1178,44 +1148,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1225,7 +1194,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1235,20 +1204,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1276,7 +1245,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1303,15 +1272,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1323,15 +1289,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1352,6 +1318,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1361,7 +1330,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1398,8 +1367,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1514,18 +1483,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1608,7 +1577,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1743,56 +1716,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1870,19 +1840,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1893,54 +1856,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1948,16 +1907,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1965,16 +1924,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1991,7 +1950,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2001,13 +1960,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2020,40 +1979,40 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2073,8 +2032,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -2146,14 +2103,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2163,17 +2120,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2189,22 +2146,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2215,11 +2172,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2300,23 +2257,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 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/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2328,8 +2289,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2363,61 +2324,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) block $break|0 block $case76|0 @@ -2886,59 +2792,59 @@ local.get $1 i32.const 255 i32.and - local.tee $2 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.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2953,17 +2859,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3109,19 +3015,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3136,7 +3042,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -3147,10 +3053,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3158,10 +3064,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -3172,7 +3078,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3202,17 +3108,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3227,7 +3133,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3238,10 +3144,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3249,10 +3155,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3263,7 +3169,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3289,17 +3195,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3314,7 +3220,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3325,10 +3231,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3336,10 +3242,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3350,7 +3256,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3387,134 +3293,175 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $3 - local.get $4 + local.set $0 + end + local.get $2 + i32.const 8 + i32.and + if local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 local.get $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 - i32.const 8 + i32.const 4 i32.and if local.get $0 @@ -3528,7 +3475,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3536,54 +3483,20 @@ i32.load8_u i32.store8 local.get $3 - local.tee $0 i32.const 2 i32.add - local.set $3 - local.get $4 + local.set $1 local.get $0 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 - i32.const 2 - i32.add - local.tee $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 + local.get $0 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 - i32.const 4 + i32.const 2 i32.and if local.get $0 @@ -3591,52 +3504,17 @@ i32.load8_u i32.store8 local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $4 - local.get $1 - i32.const 2 - i32.add local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $4 i32.const 2 i32.add local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 local.get $1 - i32.load8_u - i32.store8 - local.get $0 local.tee $4 i32.const 2 i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3848,31 +3726,27 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load 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 6900 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -3881,17 +3755,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if block $__inlined_func$~lib/util/number/utoa32 (result i32) - local.get $3 + local.get $5 i32.load8_u - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3903,7 +3776,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3914,53 +3787,53 @@ br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $1 i32.const 1 i32.shl i32.const 1 @@ -3968,8 +3841,8 @@ local.tee $2 i32.store local.get $2 - local.get $1 local.get $0 + local.get $1 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3981,141 +3854,139 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 6652 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $0 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $for-loop|0 local.get $2 - local.get $5 - i32.gt_s + local.get $6 + i32.lt_s if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add - local.get $3 + local.get $2 local.get $5 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 - local.get $4 + local.set $1 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add i32.const 6656 - local.get $4 + local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $1 i32.add - local.set $0 + local.set $1 end - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $for-loop|0 end end - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add - local.get $2 - local.get $3 + local.get $5 + local.get $6 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.tee $2 + local.tee $0 i32.gt_s if - local.get $1 - local.set $0 - local.get $2 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $4 - block $__inlined_func$~lib/string/String#substring - local.get $3 + block $__inlined_func$~lib/string/String#substring (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 6900 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $0 local.get $1 + local.get $0 local.get $1 - local.get $3 i32.lt_s select + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select i32.const 1 i32.shl - local.tee $1 - local.get $4 + local.set $3 + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $0 + local.get $3 i32.sub - local.tee $3 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4123,59 +3994,58 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 - local.set $0 br $__inlined_func$~lib/string/String#substring end i32.const 0 - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $0 i32.eq - local.get $4 + local.get $3 select if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 br $__inlined_func$~lib/string/String#substring end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 local.get $0 + local.get $3 local.get $4 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $0 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $4 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 23312 @@ -4189,32 +4059,32 @@ (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 6900 - i32.lt_s - if - i32.const 23312 - i32.const 23360 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (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 6900 + i32.lt_s + if + i32.const 23312 + i32.const 23360 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 4764 i32.load i32.const 1 i32.shr_u i32.const 1 i32.shl - local.tee $2 + local.tee $1 local.get $0 i32.const 20 i32.sub @@ -4223,9 +4093,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 i32.add - local.tee $1 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4233,31 +4103,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 - local.set $1 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 4768 - local.get $2 + local.get $1 call $~lib/memory/memory.copy local.get $1 - local.get $2 + local.get $3 i32.add local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end - local.get $1 ) (func $~lib/process/writeString (param $0 i32) (local $1 i32) @@ -4277,7 +4146,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 end local.get $0 @@ -4303,7 +4172,7 @@ end local.get $0 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -4311,13 +4180,13 @@ i32.const 6680 i32.store i32.const 6676 - local.get $5 + local.get $4 i32.store i32.const 6680 local.get $3 i32.const 8 i32.shl - local.get $4 + local.get $5 i32.or local.get $2 i32.const 16 @@ -4366,7 +4235,7 @@ if local.get $1 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.lt_u if (result i32) @@ -4374,7 +4243,7 @@ i32.const 1 i32.add else - local.get $4 + local.get $5 i32.const 2048 i32.lt_u if (result i32) @@ -4382,18 +4251,17 @@ i32.const 2 i32.add else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $3 local.get $1 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $4 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $1 i32.load16_u offset=2 @@ -4427,12 +4295,22 @@ end end local.get $2 - call $~lib/rt/tlsf/__alloc + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $1 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $5 + local.get $4 local.get $1 call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $2 @@ -4513,7 +4391,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -4591,20 +4469,20 @@ (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 6900 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 memory.size @@ -4639,7 +4517,7 @@ i32.store i32.const 1568 global.set $~lib/rt/itcms/fromSpace - local.get $0 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4648,142 +4526,142 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 8 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 global.set $std-wasi/crypto/ab global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/ab - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 4 call $~lib/typedarray/Uint8Array.wrap global.set $std-wasi/crypto/buf global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/crypto/crypto.getRandomValues global.get $~lib/memory/__stack_pointer i32.const 4768 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 call $~lib/string/String.__concat - 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 call $~lib/console/console.log global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#slice global.set $std-wasi/crypto/b1 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/ab - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 4 call $~lib/typedarray/Uint8Array.wrap global.set $std-wasi/crypto/buf global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/crypto/crypto.getRandomValues global.get $~lib/memory/__stack_pointer i32.const 4768 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 call $~lib/string/String.__concat - 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 call $~lib/console/console.log global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#slice global.set $std-wasi/crypto/b2 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/ab - local.tee $0 + local.tee $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 0 i32.const -1 call $~lib/typedarray/Uint8Array.wrap global.set $std-wasi/crypto/buf loop $for-loop|0 - local.get $1 + local.get $0 i32.const 4 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 local.get $1 + local.get $0 call $~lib/typedarray/Uint8Array#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/b1 local.tee $2 i32.store local.get $2 - local.get $1 - call $~lib/typedarray/Uint8Array#__get local.get $0 + call $~lib/typedarray/Uint8Array#__get + local.get $1 i32.ne if i32.const 0 @@ -4793,38 +4671,38 @@ call $~lib/wasi/index/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|1 - local.get $1 + local.get $0 i32.const 4 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 local.get $1 + local.get $0 i32.const 4 i32.add call $~lib/typedarray/Uint8Array#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/b2 local.tee $2 i32.store local.get $2 - local.get $1 - call $~lib/typedarray/Uint8Array#__get local.get $0 + call $~lib/typedarray/Uint8Array#__get + local.get $1 i32.ne if i32.const 0 @@ -4834,10 +4712,10 @@ call $~lib/wasi/index/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end @@ -4874,13 +4752,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 local.get $0 i32.const 20 i32.sub i32.load offset=16 local.tee $3 - i32.gt_u + local.get $1 + i32.lt_u if i32.const 1472 i32.const 1680 @@ -4933,9 +4811,12 @@ local.get $3 local.get $0 i32.store - local.get $3 local.get $0 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 local.get $2 i32.store offset=8 @@ -4956,19 +4837,17 @@ (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 0 i32.store i32.const 0 @@ -4980,9 +4859,10 @@ i32.const 0 i32.gt_s select - local.set $5 - local.get $0 + local.set $3 local.get $5 + local.get $0 + local.get $3 i32.sub local.tee $0 i32.const 0 @@ -4990,9 +4870,9 @@ i32.const 0 i32.gt_s select - local.tee $6 + local.tee $4 local.set $2 - local.get $4 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -5037,9 +4917,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -5059,19 +4936,22 @@ local.get $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store offset=4 - local.get $3 + local.get $5 local.get $2 call $~lib/memory/memory.fill local.get $0 - local.get $3 + local.get $5 i32.store + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 + local.get $5 i32.store offset=4 local.get $0 local.get $2 @@ -5086,16 +4966,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 local.get $0 i32.store local.get $0 i32.load offset=4 - local.get $5 + local.get $3 local.get $1 i32.load offset=4 i32.add - local.get $6 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -5111,4 +4990,72 @@ call $~lib/wasi/index/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/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 + ) ) diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index f0f6ba7829..497be7955f 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -283,38 +283,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -327,96 +327,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $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 $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + 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 $4 + 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 $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -428,7 +426,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -479,13 +477,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -494,18 +492,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -554,17 +552,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -578,9 +576,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -629,17 +627,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -653,7 +651,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -1025,11 +1023,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -1041,28 +1038,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1074,19 +1068,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1111,9 +1105,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1121,17 +1115,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1259,7 +1253,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1270,7 +1264,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1290,44 +1284,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1337,7 +1330,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1347,20 +1340,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1388,7 +1381,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1415,15 +1408,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1435,15 +1425,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1464,6 +1454,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1473,7 +1466,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1510,8 +1503,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1586,56 +1579,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) 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 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 local.get $1 i32.clz i32.sub - local.tee $2 + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1713,19 +1703,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1736,54 +1719,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1791,16 +1770,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1808,16 +1787,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1834,7 +1813,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1844,13 +1823,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1863,40 +1842,40 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1916,8 +1895,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -1961,13 +1938,12 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/process/writeString (param $0 i32) @@ -1988,7 +1964,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 end local.get $0 @@ -2014,7 +1990,7 @@ end local.get $0 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -2022,13 +1998,13 @@ i32.const 1096 i32.store i32.const 1092 - local.get $5 + local.get $4 i32.store i32.const 1096 local.get $3 i32.const 8 i32.shl - local.get $4 + local.get $5 i32.or local.get $2 i32.const 16 @@ -2077,7 +2053,7 @@ if local.get $1 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.lt_u if (result i32) @@ -2085,7 +2061,7 @@ i32.const 1 i32.add else - local.get $4 + local.get $5 i32.const 2048 i32.lt_u if (result i32) @@ -2093,18 +2069,17 @@ i32.const 2 i32.add else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $3 local.get $1 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $4 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $1 i32.load16_u offset=2 @@ -2138,12 +2113,22 @@ end end local.get $2 - call $~lib/rt/tlsf/__alloc + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $1 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $5 + local.get $4 local.get $1 call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $2 @@ -2187,55 +2172,55 @@ (local $0 i32) (local $1 i32) i32.const 4448 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4528 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/process/process.argv local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/process/process.env local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/process/argv local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/process/env local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/process/envKeys local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 4784 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4560 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4976 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4352 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6128 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -2302,7 +2287,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2325,7 +2310,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -2335,15 +2320,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -2408,33 +2393,10 @@ 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/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -2517,7 +2479,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -2720,14 +2686,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2737,17 +2703,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2763,22 +2729,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2789,11 +2755,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2874,23 +2840,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end - local.get $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2902,8 +2872,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2937,66 +2907,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4656 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/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 - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -3010,17 +2920,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3166,19 +3076,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3193,7 +3103,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -3204,10 +3114,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3215,10 +3125,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -3229,7 +3139,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3259,17 +3169,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3284,7 +3194,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3295,10 +3205,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3306,10 +3216,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3320,7 +3230,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3346,17 +3256,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3371,7 +3281,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3382,10 +3292,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3393,10 +3303,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3407,7 +3317,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3444,131 +3354,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3585,59 +3473,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3654,7 +3536,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3665,11 +3547,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3683,17 +3565,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3904,7 +3786,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -3913,28 +3795,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -4008,10 +3890,13 @@ local.get $0 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 local.get $1 @@ -4055,10 +3940,13 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -4074,12 +3962,11 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $1 @@ -4550,47 +4437,54 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $2 + local.tee $1 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $3 + local.set $2 loop $while-continue|0 + local.get $1 local.get $2 - local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.load - local.tee $0 + local.tee $3 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=16 i32.const 12 @@ -4601,7 +4495,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|00 + loop $while-continue|03 local.get $0 local.get $2 i32.lt_u @@ -4614,20 +4508,31 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end local.get $0 i32.const 12 i32.add local.set $0 - br $while-continue|00 + br $while-continue|03 end end local.get $1 - call $~lib/rt/itcms/__visit + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -4703,46 +4608,46 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 loop $while-continue|0 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.load - local.tee $0 + local.tee $3 i32.store block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 - local.get $0 local.get $1 + local.get $3 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 local.get $1 i32.const 0 - local.get $0 + local.get $3 select i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -4752,10 +4657,10 @@ i32.ne br_if $__inlined_func$~lib/string/String.__eq drop - local.get $0 + local.get $3 i32.const 0 local.get $1 - local.get $4 + local.get $2 call $~lib/util/string/compareImpl i32.eqz end @@ -4765,13 +4670,13 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 return end - local.get $3 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|0 end end @@ -4791,11 +4696,11 @@ (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s @@ -4824,15 +4729,25 @@ end i32.const 1088 i32.load - local.tee $7 + local.tee $2 i32.const 2 i32.shl local.tee $0 i32.const 1092 i32.load i32.add - local.tee $8 - call $~lib/rt/tlsf/__alloc + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $4 local.get $0 local.get $4 @@ -4868,52 +4783,57 @@ i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $5 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 i32.const 3 i32.store offset=4 - local.get $0 + local.get $5 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store offset=8 local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $5 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 i32.const 4 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.tee $1 + local.get $5 i32.store loop $for-loop|0 - local.get $5 - local.get $7 + local.get $1 + local.get $2 i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 2 i32.shl local.get $4 @@ -4921,81 +4841,84 @@ i32.load local.tee $0 local.get $0 - local.get $8 + local.get $3 i32.add local.get $4 i32.sub call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 5168 i32.store offset=8 - i32.const 0 - local.set $0 - block $__inlined_func$~lib/string/String#indexOf + block $__inlined_func$~lib/string/String#indexOf (result i32) + i32.const 0 i32.const 5164 i32.load i32.const 1 i32.shr_u - local.tee $6 + local.tee $7 i32.eqz br_if $__inlined_func$~lib/string/String#indexOf + drop i32.const -1 - local.set $0 - local.get $3 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $8 i32.eqz br_if $__inlined_func$~lib/string/String#indexOf + drop i32.const 0 - local.get $2 - local.get $2 + local.get $8 + local.get $8 + i32.const 0 + i32.gt_s select local.set $0 - local.get $2 - local.get $6 + local.get $8 + local.get $7 i32.sub - local.set $2 - loop $for-loop|00 + local.set $8 + loop $for-loop|01 local.get $0 - local.get $2 + local.get $8 i32.le_s if - local.get $3 local.get $0 - i32.const 5168 local.get $6 + local.get $0 + i32.const 5168 + local.get $7 call $~lib/util/string/compareImpl i32.eqz br_if $__inlined_func$~lib/string/String#indexOf + drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|00 + br $for-loop|01 end end i32.const -1 - local.set $0 end - local.get $0 + local.tee $0 i32.const -1 i32.xor if - local.get $3 + local.get $6 i32.const 0 local.get $0 call $~lib/string/String#substring - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 i32.store offset=8 - local.get $3 + local.get $6 local.get $0 i32.const 1 i32.add @@ -5005,23 +4928,23 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 - local.get $2 + local.get $5 + local.get $7 local.get $0 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set else global.get $~lib/memory/__stack_pointer i32.const 5200 i32.store offset=12 - local.get $1 - local.get $3 + local.get $5 + local.get $6 i32.const 5200 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end @@ -5031,7 +4954,7 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 return end i32.const 23808 @@ -5043,8 +4966,8 @@ ) (func $start:std-wasi/process (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5060,13 +4983,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 1056 i32.store i32.const 1056 @@ -5132,11 +5055,11 @@ i32.const 1088 i32.const 1092 call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get - local.tee $1 + local.tee $3 i32.const 65535 i32.and if - local.get $1 + local.get $3 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 64 @@ -5146,25 +5069,35 @@ end i32.const 1088 i32.load - local.tee $4 + local.tee $3 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.const 1092 i32.load i32.add + local.tee $5 + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $6 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $1 - local.get $5 + local.get $4 + local.get $6 i32.add call $~lib/bindings/wasi_snapshot_preview1/args_get - local.tee $5 + local.tee $4 i32.const 65535 i32.and if - local.get $5 + local.get $4 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 71 @@ -5173,49 +5106,49 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $5 + local.tee $4 i32.store loop $for-loop|0 + local.get $2 local.get $3 - local.get $4 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 2 i32.shl - local.get $1 + local.get $6 i32.add i32.load local.tee $7 - local.get $6 + local.get $5 local.get $7 i32.add - local.get $1 + local.get $6 i32.sub call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 i32.store offset=4 - local.get $5 - local.get $3 + local.get $4 + local.get $2 local.get $7 call $~lib/array/Array<~lib/string/String>#__set - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $1 + local.get $6 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 global.set $~lib/process/process.argv global.get $~lib/process/process.argv global.set $std-wasi/process/argv @@ -5226,28 +5159,28 @@ call $~lib/console/console.log global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/argv - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.load offset=12 - local.set $3 + local.set $2 loop $for-loop|00 local.get $0 - local.get $3 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/argv - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 local.get $0 call $~lib/array/Array<~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 call $~lib/console/console.log local.get $0 i32.const 1 @@ -5261,15 +5194,15 @@ global.get $~lib/process/process.env global.set $std-wasi/process/env global.get $~lib/memory/__stack_pointer - local.tee $4 - global.get $std-wasi/process/env local.tee $3 + global.get $std-wasi/process/env + local.tee $4 i32.store i32.const 0 - local.set $1 + local.set $2 i32.const 0 local.set $0 - local.get $4 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -5278,25 +5211,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i64.const 0 i64.store - local.get $3 + local.get $4 i32.load offset=8 local.set $5 - local.get $4 local.get $3 + local.get $4 i32.load offset=16 - local.tee $4 - call $~lib/array/Array<~lib/string/String>#constructor local.tee $3 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $4 i32.store loop $for-loop|01 - local.get $1 - local.get $4 + local.get $2 + local.get $3 i32.lt_s if - local.get $1 + local.get $2 i32.const 12 i32.mul local.get $5 @@ -5312,7 +5245,7 @@ i32.load local.tee $6 i32.store offset=4 - local.get $3 + local.get $4 local.get $0 local.get $6 call $~lib/array/Array<~lib/string/String>#__set @@ -5321,25 +5254,25 @@ i32.add local.set $0 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|01 end end - local.get $3 + local.get $4 local.get $0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $4 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 global.set $std-wasi/process/envKeys global.get $~lib/memory/__stack_pointer i32.const 5232 @@ -5350,33 +5283,33 @@ local.set $0 global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/envKeys - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.load offset=12 - local.set $3 + local.set $2 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std-wasi/process/envKeys local.tee $4 i32.store - local.get $1 + local.get $3 local.get $4 local.get $0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5280 i32.store offset=4 i32.const 5280 call $~lib/process/writeString - local.get $1 + local.get $3 call $~lib/console/console.log global.get $~lib/memory/__stack_pointer i32.const 5312 @@ -5388,11 +5321,11 @@ local.tee $4 i32.store offset=4 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,~lib/string/String>#find - local.tee $1 + local.tee $3 i32.eqz if i32.const 5344 @@ -5403,11 +5336,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.load offset=4 - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/console/console.log local.get $0 i32.const 1 @@ -5441,7 +5374,7 @@ i64.load i64.const 1000000 i64.div_u - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -5454,7 +5387,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/itoa64 - local.get $2 + local.get $1 i64.eqz if global.get $~lib/memory/__stack_pointer @@ -5466,21 +5399,21 @@ br $__inlined_func$~lib/util/number/itoa64 end i64.const 0 - local.get $2 + local.get $1 i64.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $1 - select local.tee $2 + select + local.tee $1 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.wrap_i64 local.tee $3 local.tee $0 @@ -5529,7 +5462,7 @@ i32.add end end - local.get $1 + local.get $2 i32.add local.tee $4 i32.const 1 @@ -5544,57 +5477,57 @@ call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $2 + local.get $1 i64.const 10000000000 i64.ge_u i32.add else - local.get $2 + local.get $1 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $2 + local.get $1 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $2 + local.get $1 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $2 + local.get $1 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $2 + local.get $1 i64.const 1000000000000000000 i64.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 @@ -5604,11 +5537,11 @@ local.tee $0 i32.store local.get $0 - local.get $2 + local.get $1 local.get $3 call $~lib/util/number/utoa64_dec_lut end - local.get $1 + local.get $2 if local.get $0 i32.const 45 @@ -5647,7 +5580,7 @@ end i32.const 1088 i64.load - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -5660,7 +5593,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/utoa64 - local.get $2 + local.get $1 i64.eqz if global.get $~lib/memory/__stack_pointer @@ -5671,14 +5604,14 @@ local.set $0 br $__inlined_func$~lib/util/number/utoa64 end - local.get $2 + local.get $1 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $0 i32.const 100000 i32.lt_u @@ -5725,7 +5658,7 @@ i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -5733,62 +5666,62 @@ local.tee $0 i32.store local.get $0 + local.get $2 local.get $3 - local.get $1 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $2 + local.get $1 i64.const 10000000000 i64.ge_u i32.add else - local.get $2 + local.get $1 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $2 + local.get $1 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $2 + local.get $1 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $2 + local.get $1 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $2 + local.get $1 i64.const 1000000000000000000 i64.ge_u i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 @@ -5796,8 +5729,8 @@ local.tee $0 i32.store local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa64_dec_lut end global.get $~lib/memory/__stack_pointer @@ -5827,12 +5760,12 @@ i32.const 20 i32.sub i32.load offset=16 - local.set $1 + local.set $2 i32.const 1088 local.get $0 i32.store i32.const 1092 - local.get $1 + local.get $2 i32.store i32.const 0 i32.const 1088 @@ -5901,10 +5834,6 @@ i32.store local.get $1 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 i32.const 0 @@ -5932,26 +5861,29 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 local.get $3 + local.get $2 call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 local.get $0 @@ -6018,12 +5950,12 @@ block $while-break|0 local.get $0 i32.load8_u - local.set $3 + local.set $5 local.get $0 i32.const 1 i32.add local.set $0 - local.get $3 + local.get $5 i32.const 128 i32.and if @@ -6035,20 +5967,20 @@ i32.load8_u i32.const 63 i32.and - local.set $5 + local.set $6 local.get $0 i32.const 1 i32.add local.set $0 - local.get $3 + local.get $5 i32.const 224 i32.and i32.const 192 i32.eq if local.get $1 + local.get $6 local.get $5 - local.get $3 i32.const 31 i32.and i32.const 6 @@ -6064,24 +5996,24 @@ i32.load8_u i32.const 63 i32.and - local.set $6 + local.set $3 local.get $0 i32.const 1 i32.add local.set $0 - local.get $3 + local.get $5 i32.const 240 i32.and i32.const 224 i32.eq if - local.get $6 local.get $3 + local.get $5 i32.const 15 i32.and i32.const 12 i32.shl - local.get $5 + local.get $6 i32.const 6 i32.shl i32.or @@ -6096,16 +6028,16 @@ i32.load8_u i32.const 63 i32.and - local.get $3 + local.get $5 i32.const 7 i32.and i32.const 18 i32.shl - local.get $5 + local.get $6 i32.const 12 i32.shl i32.or - local.get $6 + local.get $3 i32.const 6 i32.shl i32.or @@ -6149,11 +6081,11 @@ end end else - local.get $3 + local.get $5 i32.eqz br_if $while-break|0 local.get $1 - local.get $3 + local.get $5 i32.store16 end local.get $1 @@ -6345,10 +6277,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $4 i32.sub - local.tee $2 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6362,7 +6294,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -6375,7 +6307,7 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 @@ -6384,7 +6316,7 @@ local.get $0 local.get $4 i32.add - local.get $2 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6418,17 +6350,20 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $7 + local.tee $8 call $~lib/map/Map<~lib/string/String,~lib/string/String>#find local.tee $3 if local.get $3 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end else local.get $0 i32.load offset=16 @@ -6456,7 +6391,7 @@ i32.const 1 i32.or end - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -6473,14 +6408,14 @@ i32.const 0 i32.store offset=8 local.get $3 - local.get $10 + local.get $7 i32.const 1 i32.add local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $3 @@ -6488,7 +6423,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $9 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -6496,51 +6431,51 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $11 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 + local.set $10 local.get $4 local.set $3 loop $while-continue|0 local.get $5 - local.get $11 + local.get $10 i32.ne if - local.get $11 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $5 i32.load - local.tee $9 + local.tee $11 i32.store offset=8 local.get $3 - local.get $9 + local.get $11 i32.store local.get $3 - local.get $11 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $3 - local.get $9 + local.get $11 call $~lib/util/hash/HASH<~lib/string/String> - local.get $10 + local.get $7 i32.and i32.const 2 i32.shl - local.get $8 + local.get $6 i32.add - local.tee $9 + local.tee $11 i32.load i32.store offset=8 - local.get $9 + local.get $11 local.get $3 i32.store local.get $3 @@ -6548,32 +6483,38 @@ i32.add local.set $3 end - local.get $11 + local.get $5 i32.const 12 i32.add - local.set $11 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $8 + local.get $6 i32.store + local.get $6 + if + local.get $0 + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $10 + local.get $7 i32.store offset=4 local.get $0 local.get $4 i32.store offset=8 - local.get $0 local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $4 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $6 + local.get $9 i32.store offset=12 local.get $0 local.get $0 @@ -6592,11 +6533,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $10 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $10 + local.get $4 i32.const 12 i32.mul local.get $3 @@ -6604,17 +6545,23 @@ local.tee $3 local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $0 i32.load offset=20 @@ -6626,7 +6573,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $7 + local.get $8 i32.and i32.const 2 i32.shl @@ -6651,4 +6598,77 @@ call $~lib/wasi/index/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4656 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/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 + ) ) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index cb72604bf0..c2e737cf0d 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -24,24 +24,23 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 - local.get $2 - select - local.set $3 + local.tee $1 + drop + i32.const 0 + local.set $2 + local.get $1 local.get $2 - local.get $3 i32.const 1292 i32.load i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.add i32.lt_s if @@ -50,38 +49,36 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) i32.const 1296 - local.set $4 - local.get $3 + local.set $3 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.tee $3 + local.tee $2 i32.const 7 i32.and - i32.const 1 - local.get $2 - local.tee $1 + i32.eqz + local.get $1 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load - local.get $4 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $4 + local.set $3 local.get $1 i32.const 4 i32.sub @@ -100,27 +97,27 @@ local.set $1 local.get $0 if - local.get $4 - i32.load16_u - local.tee $0 local.get $3 i32.load16_u - local.tee $2 + local.tee $4 + local.get $2 + i32.load16_u + local.tee $0 i32.ne if - local.get $2 local.get $0 + local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $4 + local.set $3 br $while-continue|1 end end @@ -187,11 +184,11 @@ ) (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.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 @@ -252,11 +249,11 @@ ) (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.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 @@ -308,11 +305,11 @@ ) (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.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 @@ -363,11 +360,11 @@ ) (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.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 @@ -426,11 +423,11 @@ ) (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.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 diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index dd66dff450..ef5d2c9f11 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -99,43 +99,43 @@ (local $0 i32) (local $1 i32) i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $std/array-literal/emptyArrayI32 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayI8 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayI32 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayRef local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayRefWithCtor local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1200 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -202,7 +202,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -225,7 +225,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -235,15 +235,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -308,30 +308,6 @@ 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) @@ -368,11 +344,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -384,28 +359,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -417,19 +389,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -454,9 +426,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -464,17 +436,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -602,7 +574,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -613,7 +585,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -633,44 +605,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -680,7 +651,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -690,20 +661,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -731,7 +702,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -758,15 +729,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -778,15 +746,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -807,6 +775,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -816,7 +787,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -853,8 +824,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1013,7 +984,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1138,7 +1113,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1148,7 +1123,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1161,14 +1136,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1193,56 +1167,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1343,12 +1314,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1364,14 +1335,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1382,18 +1353,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1404,54 +1374,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1459,16 +1425,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1476,15 +1442,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1512,12 +1478,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1531,7 +1497,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1541,7 +1507,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1559,12 +1525,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1594,8 +1560,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1624,19 +1590,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1645,18 +1611,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1665,10 +1631,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1677,97 +1643,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1799,67 +1765,7 @@ end end end - local.get $3 - ) - (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 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + local.get $2 ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 @@ -1870,10 +1776,13 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) @@ -1887,18 +1796,18 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 i32.const 4 @@ -1909,61 +1818,52 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $std/array-literal/RefWithCtor - block $~lib/array/Array - block $std/array-literal/Ref - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $std/array-literal/RefWithCtor + block $~lib/array/Array + block $std/array-literal/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/__visit + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid 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 + local.get $0 + call $~lib/array/Array~visit return end - local.get $0 - call $~lib/array/Array~visit return end + local.get $0 + call $~lib/array/Array~visit return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - call $~lib/array/Array~visit - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start call $start:std/array-literal @@ -2547,10 +2447,13 @@ local.tee $2 local.get $3 i32.store - local.get $2 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 local.get $3 i32.store offset=4 @@ -2632,4 +2535,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + 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 + ) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 3432398cde..ffd65decf8 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1,12 +1,12 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) @@ -718,38 +718,38 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 7696 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $std/array/inputStabArr local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array/outputStabArr local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 15152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2176 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5952 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 10256 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11312 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -816,7 +816,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -839,7 +839,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -849,15 +849,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -922,30 +922,6 @@ 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) @@ -982,11 +958,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -998,28 +973,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1031,19 +1003,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1068,9 +1040,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1078,17 +1050,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1216,7 +1188,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1227,7 +1199,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1247,44 +1219,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1294,7 +1265,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1304,20 +1275,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1345,7 +1316,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1372,15 +1343,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1392,15 +1360,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1421,6 +1389,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1430,7 +1401,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1467,8 +1438,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1583,18 +1554,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1677,7 +1648,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1812,56 +1787,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1939,19 +1911,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1962,54 +1927,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -2017,16 +1978,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -2034,16 +1995,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -2060,7 +2021,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2070,13 +2031,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2089,40 +2050,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2142,12 +2103,10 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) block $~lib/util/memory/memset|inlined.0 local.get $2 @@ -2159,7 +2118,7 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.sub local.get $1 @@ -2174,12 +2133,12 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $3 + local.get $4 i32.const 2 i32.sub local.get $1 i32.store8 - local.get $3 + local.get $4 i32.const 3 i32.sub local.get $1 @@ -2191,7 +2150,7 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $3 + local.get $4 i32.const 4 i32.sub local.get $1 @@ -2206,9 +2165,9 @@ i32.sub i32.const 3 i32.and - local.tee $5 + local.tee $4 i32.add - local.tee $3 + local.tee $5 local.get $1 i32.const 255 i32.and @@ -2216,9 +2175,9 @@ i32.mul local.tee $0 i32.store - local.get $3 - local.get $2 local.get $5 + local.get $2 + local.get $4 i32.sub i32.const -4 i32.and @@ -2233,10 +2192,10 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=4 - local.get $3 + local.get $5 local.get $0 i32.store offset=8 local.get $1 @@ -2253,16 +2212,16 @@ i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=12 - local.get $3 + local.get $5 local.get $0 i32.store offset=16 - local.get $3 + local.get $5 local.get $0 i32.store offset=20 - local.get $3 + local.get $5 local.get $0 i32.store offset=24 local.get $1 @@ -2285,43 +2244,43 @@ i32.sub local.get $0 i32.store - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 i32.add - local.tee $5 + local.tee $4 i32.add local.set $1 local.get $2 - local.get $5 + local.get $4 i32.sub local.set $2 local.get $0 i64.extend_i32_u - local.tee $4 + local.tee $3 i64.const 32 i64.shl - local.get $4 + local.get $3 i64.or - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u if local.get $1 - local.get $4 + local.get $3 i64.store local.get $1 - local.get $4 + local.get $3 i64.store offset=8 local.get $1 - local.get $4 + local.get $3 i64.store offset=16 local.get $1 - local.get $4 + local.get $3 i64.store offset=24 local.get $2 i32.const 32 @@ -2384,23 +2343,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 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/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2412,8 +2375,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2448,66 +2411,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 294 - 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 - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2521,17 +2424,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2677,19 +2580,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2704,7 +2607,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2715,10 +2618,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2726,10 +2629,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2740,7 +2643,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2770,17 +2673,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2795,7 +2698,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2806,10 +2709,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2817,10 +2720,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2831,7 +2734,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2857,17 +2760,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2882,7 +2785,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2893,10 +2796,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2904,10 +2807,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2918,7 +2821,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2955,131 +2858,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3096,59 +2977,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3165,7 +3040,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3176,11 +3051,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3194,17 +3069,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3608,7 +3483,6 @@ (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 i32.load offset=8 local.tee $5 @@ -3663,42 +3537,39 @@ local.set $1 end local.get $1 - local.set $2 local.get $4 - local.tee $3 i32.const 20 i32.sub - local.tee $4 + local.tee $2 i32.load i32.const -4 i32.and i32.const 16 i32.sub - local.get $1 - i32.ge_u + i32.le_u if - local.get $4 local.get $2 + local.get $1 i32.store offset=16 - local.get $3 + local.get $4 br $__inlined_func$~lib/rt/itcms/__renew end + local.get $1 local.get $2 - local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $6 - local.get $3 - local.get $2 + local.tee $3 local.get $4 + local.get $1 + local.get $2 i32.load offset=16 - local.tee $4 + local.tee $2 + local.get $1 local.get $2 - local.get $4 i32.lt_u select call $~lib/memory/memory.copy - local.get $6 + local.get $3 end local.tee $2 local.get $5 @@ -3709,7 +3580,7 @@ i32.sub call $~lib/memory/memory.fill local.get $2 - local.get $3 + local.get $4 i32.ne if local.get $0 @@ -3718,10 +3589,13 @@ local.get $0 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 local.get $1 @@ -3781,8 +3655,8 @@ local.get $0 i32.load offset=12 local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -3814,10 +3688,13 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4033,63 +3910,69 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) (local $7 i64) - (local $8 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.tee $2 + local.get $1 i32.const 1 i32.gt_u if - local.get $2 + local.get $1 i32.const 1 i32.shr_u - local.set $8 - local.get $2 + local.set $4 + local.get $1 i32.const 8 i32.sub - local.set $3 + local.set $5 loop $while-continue|0 - local.get $8 - local.get $1 + local.get $4 + local.get $2 i32.const 7 i32.add i32.gt_u if - local.get $1 - local.get $5 + local.get $0 + local.get $2 i32.add - local.tee $4 - i64.load local.tee $6 + i64.load + local.tee $3 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $6 + local.get $3 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.set $6 - local.get $4 + local.tee $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + local.set $3 + local.get $6 + local.get $0 local.get $5 i32.add - local.get $1 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i64.load local.tee $7 i64.const 8 @@ -4116,64 +3999,51 @@ i64.const 32 i64.rotr i64.store - local.get $4 - local.get $6 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and local.get $6 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr + local.get $3 i64.store - local.get $1 + local.get $2 i32.const 8 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $2 + local.set $1 loop $while-continue|1 - local.get $1 - local.get $8 + local.get $2 + local.get $4 i32.lt_u if - local.get $1 - local.get $5 + local.get $0 + local.get $2 i32.add - local.tee $3 + local.tee $5 i32.load8_u - local.set $4 - local.get $3 - local.get $2 + local.set $6 + local.get $5 local.get $1 + local.get $2 i32.sub - local.get $5 + local.get $0 i32.add - local.tee $3 + local.tee $5 i32.load8_u i32.store8 - local.get $3 - local.get $4 + local.get $5 + local.get $6 i32.store8 - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|1 end end end - local.get $0 ) (func $~lib/array/Array#reverse (param $0 i32) (result i32) (local $1 i32) @@ -4183,48 +4053,47 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $4 i32.const 1 i32.gt_u if - local.get $2 + local.get $4 i32.const 1 i32.shr_u - local.set $7 - local.get $2 + local.set $3 + local.get $4 i32.const 2 i32.sub - local.set $4 + local.set $5 loop $while-continue|0 - local.get $7 + local.get $3 local.get $1 i32.const 1 i32.add i32.gt_u if - local.get $4 + local.get $5 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $5 + local.tee $6 i32.load i32.const 16 i32.rotr - local.set $8 - local.get $5 + local.set $7 + local.get $6 local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $6 i32.load @@ -4232,7 +4101,7 @@ i32.rotr i32.store local.get $6 - local.get $8 + local.get $7 i32.store local.get $1 i32.const 2 @@ -4241,36 +4110,36 @@ br $while-continue|0 end end - local.get $2 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.lt_u if local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $4 - local.get $2 - local.get $6 + local.set $6 + local.get $5 + local.get $4 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $5 i32.load16_u i32.store16 local.get $5 - local.get $4 + local.get $6 i32.store16 local.get $1 i32.const 1 @@ -4412,8 +4281,8 @@ ) (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const -1 - i32.le_s + i32.const 0 + i32.lt_s ) (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 @@ -4543,18 +4412,17 @@ local.get $1 i32.const 2 i32.eq + local.get $0 + i32.const 202 + i32.ne + i32.and if - local.get $0 - i32.const 202 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 735 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 1552 + i32.const 735 + i32.const 7 + call $~lib/builtins/abort + unreachable end ) (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) @@ -4749,41 +4617,41 @@ (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 f32) - (local $8 i32) + (local $7 i32) + (local $8 f32) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 2 i32.shl local.get $0 i32.add local.tee $3 f32.load offset=4 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f32.load @@ -4791,7 +4659,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -4800,10 +4668,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -4819,10 +4687,10 @@ local.get $0 i32.add f32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -4835,7 +4703,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f32.store offset=8 local.get $3 i32.const 1 @@ -4897,10 +4765,10 @@ i32.add local.get $6 f32.store offset=4 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -4908,8 +4776,8 @@ (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 f32) - (local $7 i32) + (local $6 i32) + (local $7 f32) local.get $1 local.get $2 i32.eq @@ -4950,9 +4818,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f32.load offset=4 - local.get $7 + local.get $6 f32.load i32.const 2 global.set $~argumentsLength @@ -4993,14 +4861,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f32.load f32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f32.store local.get $2 @@ -5179,13 +5047,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f32) + (local $10 f32) + (local $11 f32) (local $12 i32) (local $13 i32) - (local $14 f32) - (local $15 f32) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -5199,11 +5068,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -5211,17 +5079,17 @@ end local.get $0 f32.load - local.set $15 + local.set $11 local.get $0 f32.load offset=4 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5230,21 +5098,20 @@ local.tee $1 select f32.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f32.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5254,25 +5121,25 @@ select f32.store offset=4 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $15 + local.set $10 local.get $0 f32.load offset=4 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5282,8 +5149,8 @@ select f32.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=4 @@ -5291,7 +5158,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -5303,52 +5170,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 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/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -5357,32 +5240,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -5391,68 +5274,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -5460,26 +5341,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -5488,14 +5369,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -5507,7 +5388,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -5519,13 +5400,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -5536,9 +5417,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) @@ -5638,41 +5519,41 @@ (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 f64) - (local $8 i32) + (local $7 i32) + (local $8 f64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 f64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f64.load @@ -5680,7 +5561,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5689,10 +5570,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -5708,10 +5589,10 @@ local.get $0 i32.add f64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -5724,7 +5605,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f64.store offset=16 local.get $3 i32.const 1 @@ -5786,10 +5667,10 @@ i32.add local.get $6 f64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -5797,8 +5678,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 f64) - (local $6 f64) - (local $7 i32) + (local $6 i32) + (local $7 f64) local.get $1 local.get $2 i32.eq @@ -5839,9 +5720,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f64.load offset=8 - local.get $7 + local.get $6 f64.load i32.const 2 global.set $~argumentsLength @@ -5882,14 +5763,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f64.load f64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f64.store local.get $2 @@ -6068,13 +5949,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) (local $12 i32) (local $13 i32) - (local $14 f64) - (local $15 f64) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -6088,11 +5970,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -6100,17 +5981,17 @@ end local.get $0 f64.load - local.set $15 + local.set $11 local.get $0 f64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -6119,21 +6000,20 @@ local.tee $1 select f64.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -6143,25 +6023,25 @@ select f64.store offset=8 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $15 + local.set $10 local.get $0 f64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -6171,8 +6051,8 @@ select f64.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=8 @@ -6180,7 +6060,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -6192,52 +6072,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 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/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -6246,32 +6142,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -6280,68 +6176,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -6349,26 +6243,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -6377,14 +6271,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -6396,7 +6290,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -6408,13 +6302,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -6425,9 +6319,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -6491,13 +6385,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -6719,22 +6613,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -6853,18 +6747,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -6876,7 +6770,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -6888,7 +6782,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -6913,8 +6807,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -6928,11 +6822,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -6940,87 +6833,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -7035,16 +6927,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -7053,7 +6953,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -7064,50 +6964,58 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -7115,23 +7023,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -7141,11 +7049,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -7155,33 +7063,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -7189,27 +7095,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -7217,15 +7123,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -7236,7 +7142,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -7248,13 +7154,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -7265,9 +7171,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -7286,13 +7192,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -7514,22 +7420,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -7648,18 +7554,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -7671,7 +7577,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -7683,7 +7589,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -7708,8 +7614,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -7723,11 +7629,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -7735,87 +7640,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -7830,16 +7734,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -7848,7 +7760,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -7859,50 +7771,58 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -7910,23 +7830,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -7936,11 +7856,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -7950,33 +7870,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -7984,27 +7902,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -8012,15 +7930,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -8031,7 +7949,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -8043,13 +7961,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -8060,9 +7978,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -8085,28 +8003,28 @@ call $~lib/math/NativeMath.seedRandom end global.get $~lib/math/random_state0_64 - local.set $0 + local.set $1 global.get $~lib/math/random_state1_64 - local.tee $1 + local.tee $0 global.set $~lib/math/random_state0_64 - local.get $1 local.get $0 + local.get $1 i64.const 23 i64.shl - local.get $0 + local.get $1 i64.xor - local.tee $0 + local.tee $1 i64.const 17 i64.shr_u - local.get $0 + local.get $1 i64.xor i64.xor - local.get $1 + local.get $0 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $1 + local.get $0 i64.const 12 i64.shr_u i64.const 4607182418800017408 @@ -8151,46 +8069,46 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if global.get $~lib/memory/__stack_pointer - local.tee $6 - local.get $8 + local.tee $3 + local.get $7 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $6 i32.load - local.tee $3 + local.tee $5 i32.store + local.get $3 local.get $6 - local.get $5 i32.load offset=4 local.tee $6 i32.store offset=4 local.get $6 - local.set $5 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + local.get $5 local.get $6 local.get $4 i32.load @@ -8198,12 +8116,12 @@ i32.const 0 i32.le_s if - local.get $3 - local.set $5 - local.get $6 + local.get $5 local.set $3 + local.get $6 + local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $6 @@ -8220,12 +8138,12 @@ local.get $0 i32.add i32.load - local.tee $7 + local.tee $8 i32.store i32.const 2 global.set $~argumentsLength - local.get $7 - local.get $3 + local.get $8 + local.get $5 local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8237,7 +8155,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store offset=8 local.get $6 i32.const 1 @@ -8252,7 +8170,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $5 i32.store offset=8 loop $while-continue|2 local.get $1 @@ -8267,12 +8185,12 @@ local.get $0 i32.add i32.load - local.tee $3 + local.tee $5 i32.store i32.const 2 global.set $~argumentsLength - local.get $3 local.get $5 + local.get $3 local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8284,7 +8202,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $5 i32.store offset=4 local.get $6 i32.const 1 @@ -8299,12 +8217,12 @@ i32.shl local.get $0 i32.add - local.get $5 + local.get $3 i32.store offset=4 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -8341,7 +8259,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -8358,10 +8276,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -8373,7 +8291,7 @@ local.get $6 i32.gt_s if - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 2 @@ -8492,10 +8410,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $6 i64.const 0 i64.store - local.get $5 + local.get $6 i32.const 0 i32.store offset=8 block $folding-inner0 @@ -8520,83 +8438,83 @@ br $break|0 end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 local.get $0 i32.load - local.tee $1 + local.tee $3 i32.store - local.get $4 + local.get $1 local.get $0 i32.load offset=4 - local.tee $4 + local.tee $1 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $1 + local.get $3 + local.get $3 local.get $1 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.tee $4 select i32.store global.get $~lib/memory/__stack_pointer + local.get $3 local.get $1 local.get $4 - local.get $3 select local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $4 + local.tee $3 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $3 local.get $1 local.get $1 - local.get $4 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.tee $4 select i32.store offset=4 local.get $0 local.get $1 - local.get $4 local.get $3 + local.get $4 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 local.get $0 i32.load - local.tee $1 + local.tee $3 i32.store offset=8 - local.get $4 + local.get $1 local.get $0 i32.load offset=4 - local.tee $4 + local.tee $1 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $1 + local.get $3 + local.get $3 local.get $1 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8606,8 +8524,8 @@ select i32.store local.get $0 + local.get $3 local.get $1 - local.get $4 local.get $2 select i32.store offset=4 @@ -8630,16 +8548,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $9 - local.get $5 + local.get $7 i32.add local.set $10 - i32.const 0 - local.set $5 loop $for-loop|1 local.get $5 local.get $6 @@ -8659,10 +8585,18 @@ 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/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $11 local.get $0 i32.const 0 @@ -8929,15 +8863,14 @@ (local $5 i32) (local $6 i32) local.get $1 - i32.const 0 - i32.const 0 + i32.eqz local.get $0 + i32.eqz local.get $0 local.get $1 i32.eq - select - select - i32.eqz + i32.or + i32.or if i32.const 0 return @@ -8982,7 +8915,7 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $6 local.get $5 local.get $5 @@ -8992,8 +8925,7 @@ local.tee $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $0 @@ -9030,14 +8962,14 @@ if local.get $0 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $2 i32.ne if - local.get $2 local.get $4 + local.get $2 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -9087,7 +9019,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -9101,32 +9033,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -9143,29 +9074,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -9181,25 +9112,25 @@ (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + 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 20 i32.sub @@ -9208,7 +9139,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -9217,9 +9148,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -9227,31 +9158,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -9393,47 +9323,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -9452,35 +9381,35 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -9489,16 +9418,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - local.get $3 + local.get $7 i32.eqz if - local.get $4 + local.get $3 i32.load call $~lib/util/number/itoa32 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9506,92 +9433,91 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 - i32.add local.get $6 + i32.add + local.get $2 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $4 if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $1 - local.get $5 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $5 + local.get $0 + local.get $4 i32.add - local.set $2 + local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 - local.get $2 + local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.tee $1 + local.tee $0 i32.gt_s if + local.get $6 local.get $0 - local.get $1 call $~lib/string/String#substring - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9602,8 +9528,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -9621,47 +9547,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -9678,35 +9603,35 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 + i32.load offset=12 + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -9715,16 +9640,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - local.get $3 + local.get $7 i32.eqz if - local.get $4 + local.get $3 i32.load call $~lib/util/number/utoa32 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9732,92 +9655,91 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 - i32.add local.get $6 + i32.add + local.get $2 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $4 if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $1 - local.get $5 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $5 + local.get $0 + local.get $4 i32.add - local.set $2 + local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 - local.get $2 + local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.tee $1 + local.tee $0 i32.gt_s if + local.get $6 local.get $0 - local.get $1 call $~lib/string/String#substring - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9828,84 +9750,83 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 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 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i64) (local $13 i64) local.get $2 local.get $1 i64.sub - local.set $10 + local.set $12 local.get $2 i64.const 1 i32.const 0 local.get $3 i32.sub - local.tee $11 + local.tee $10 i64.extend_i32_s local.tee $1 i64.shl - local.tee $12 + local.tee $13 i64.const 1 i64.sub - local.tee $13 + local.tee $11 i64.and local.set $7 local.get $2 local.get $1 i64.shr_u i32.wrap_i64 + local.tee $3 local.tee $6 - local.set $3 - local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $6 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $6 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $6 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $6 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $6 i32.const 100000000 i32.ge_u i32.add @@ -9934,107 +9855,107 @@ 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 $6 + local.get $3 i32.const 1000000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 - local.set $3 - i32.const 0 + local.get $3 local.set $6 + i32.const 0 + local.set $3 br $break|1 end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 local.get $5 + local.get $6 i32.or if local.get $5 @@ -10047,7 +9968,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -10058,16 +9979,16 @@ i32.const 1 i32.sub local.set $9 + local.get $4 local.get $7 - local.get $6 + local.get $3 i64.extend_i32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $4 - i64.le_u + i64.ge_u if local.get $9 global.get $~lib/util/number/_K @@ -10079,7 +10000,7 @@ i32.const 12832 i32.add i64.load32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl local.set $2 @@ -10090,44 +10011,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $6 loop $while-continue|3 + local.get $1 + local.get $12 + i64.lt_u local.get $2 local.get $4 local.get $1 i64.sub i64.le_u - i32.const 0 - local.get $1 - local.get $10 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 - local.get $10 + local.get $12 local.get $1 i64.sub local.get $1 local.get $2 i64.add local.tee $7 - local.get $10 + local.get $12 i64.sub i64.gt_u local.get $7 - local.get $10 + local.get $12 i64.lt_u - select + i32.or else i32.const 0 end if - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 local.get $1 local.get $2 i64.add @@ -10135,8 +10054,8 @@ br $while-continue|3 end end + local.get $0 local.get $6 - local.get $3 i32.store16 local.get $5 return @@ -10144,7 +10063,7 @@ br $while-continue|0 end end - loop $while-continue|4 + loop $while-continue|4 (result i32) local.get $4 i64.const 10 i64.mul @@ -10153,7 +10072,7 @@ i64.const 10 i64.mul local.tee $1 - local.get $11 + local.get $10 i64.extend_i32_s i64.shr_u local.tee $2 @@ -10185,93 +10104,88 @@ i32.const 1 i32.sub local.set $9 - local.get $4 local.get $1 - local.get $13 + local.get $11 i64.and local.tee $7 - i64.le_u - br_if $while-continue|4 - end - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 12832 - i32.add - i64.load32_u - local.get $10 - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $6 - i32.load16_u - local.set $3 - loop $while-continue|6 - local.get $12 local.get $4 - local.get $1 - i64.sub - i64.le_u + i64.ge_u + br_if $while-continue|4 + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 i32.const 0 - local.get $1 - local.get $2 - i64.lt_u - select - if (result i32) - i32.const 1 - local.get $2 - local.get $1 - i64.sub + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 12832 + i32.add + i64.load32_u + local.get $12 + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $6 + loop $while-continue|6 local.get $1 - local.get $12 - i64.add - local.tee $7 - local.get $2 - i64.sub - i64.gt_u local.get $2 - local.get $7 - i64.gt_u - select - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.sub - local.set $3 + i64.lt_u + local.get $13 + local.get $4 local.get $1 - local.get $12 - i64.add - local.set $1 - br $while-continue|6 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $2 + local.get $1 + i64.sub + local.get $1 + local.get $13 + i64.add + local.tee $7 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $7 + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $6 + i32.store16 + local.get $5 end - local.get $6 - local.get $3 - i32.store16 - local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -10290,18 +10204,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -10318,27 +10231,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -10360,19 +10272,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -10389,7 +10300,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -10407,7 +10318,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -10418,24 +10329,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -10481,20 +10391,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -10517,20 +10424,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -10538,63 +10444,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -10613,18 +10516,20 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (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 $8 + local.tee $3 if (result f64) local.get $0 i32.const 45 @@ -10641,40 +10546,38 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.set $3 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $3 + local.get $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl i64.add - local.set $2 - local.get $3 - i32.const 1 - local.get $3 - select - i32.const 1075 - i32.sub - local.tee $3 - i32.const 1 - i32.sub - local.get $2 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $4 i64.clz i32.wrap_i64 - local.tee $7 + local.tee $8 i32.sub - local.set $9 - local.get $5 - local.get $7 + local.set $10 + local.get $4 + local.get $8 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -10684,25 +10587,25 @@ i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $8 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $3 - local.get $7 - i32.sub local.get $9 + local.get $8 + i32.sub + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $9 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -10711,9 +10614,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $3 + local.tee $9 local.get $1 - local.get $3 + local.get $9 f64.convert_i32_s f64.ne i32.add @@ -10721,18 +10624,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $3 + local.tee $9 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $7 + local.get $10 i32.const 11960 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $3 + local.get $9 i32.const 1 i32.shl i32.const 12656 @@ -10750,55 +10653,78 @@ local.get $2 i64.const 32 i64.shr_u - local.tee $14 - global.get $~lib/util/number/_frc_pow local.tee $5 + global.get $~lib/util/number/_frc_pow + local.tee $7 i64.const 4294967295 i64.and + local.tee $12 local.tee $2 - local.tee $4 i64.mul - local.get $4 + local.get $2 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $5 local.set $13 global.get $~lib/util/number/_frc_plus local.tee $4 i64.const 4294967295 i64.and - local.set $6 + local.set $2 local.get $4 i64.const 32 i64.shr_u - local.tee $10 - local.get $2 + local.tee $6 + local.get $12 i64.mul local.get $2 - local.get $6 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add + local.set $14 + global.get $~lib/util/number/_frc_minus + local.tee $15 + i64.const 4294967295 + i64.and local.set $4 - local.get $5 - local.get $10 + local.get $15 + i64.const 32 + i64.shr_u + local.tee $15 + local.get $12 i64.mul local.get $4 + local.get $12 + i64.mul i64.const 32 i64.shr_u i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 local.get $5 - local.get $6 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $16 + local.tee $7 i64.mul - local.get $4 + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $11 + i64.mul + local.get $13 i64.const 4294967295 i64.and i64.add @@ -10807,44 +10733,17 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $4 - global.get $~lib/util/number/_frc_minus - local.tee $6 - i64.const 4294967295 - i64.and - local.set $10 local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $2 - i64.mul - local.get $2 - local.get $10 + local.get $16 i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $2 - local.get $8 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 local.get $14 - i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add - local.get $11 - local.get $13 + local.get $2 + local.get $16 i64.mul - local.get $12 + local.get $14 i64.const 4294967295 i64.and i64.add @@ -10853,24 +10752,26 @@ i64.const 32 i64.shr_u i64.add - local.get $4 + i64.const 1 + i64.sub + local.tee $2 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $8 i32.add i32.const -64 i32.sub - local.get $4 - local.get $5 - local.get $6 - i64.mul local.get $2 + local.get $15 + local.get $16 + i64.mul + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $5 - local.get $10 + local.get $4 + local.get $16 i64.mul - local.get $2 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -10882,13 +10783,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $3 call $~lib/util/number/genDigits - local.get $8 + local.get $3 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $3 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -10962,38 +10863,36 @@ call $~lib/util/number/dtoa_core ) (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 f64) + (local $1 f64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + block $__inlined_func$~lib/util/string/joinFloatArray (result i32) + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + 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 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -11002,29 +10901,28 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end block $folding-inner0 - local.get $3 + local.get $7 i32.eqz if - local.get $4 - f64.load - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/dtoa - local.get $2 + block $__inlined_func$~lib/util/number/dtoa (result i32) + local.get $5 + f64.load + 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 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 f64.const 0 f64.eq if @@ -11033,17 +10931,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11760 - local.set $0 br $__inlined_func$~lib/util/number/dtoa end - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.sub f64.const 0 f64.ne if - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.ne if global.get $~lib/memory/__stack_pointer @@ -11051,7 +10948,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11792 - local.set $0 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -11060,109 +10956,110 @@ global.set $~lib/memory/__stack_pointer i32.const 11824 i32.const 11872 - local.get $2 + local.get $1 f64.const 0 f64.lt select - local.set $0 br $__inlined_func$~lib/util/number/dtoa end i32.const 11904 - local.get $2 + local.get $1 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 11904 - local.get $1 + local.get $0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 11724 i32.load i32.const 1 i32.shr_u - local.tee $5 + local.tee $3 i32.const 28 i32.add i32.mul i32.const 28 i32.add - local.tee $7 + local.tee $4 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $6 + i32.add + local.get $2 i32.const 3 i32.shl - local.get $4 + local.get $5 i32.add f64.load call $~lib/util/number/dtoa_buffered local.get $0 i32.add local.set $0 - local.get $5 + local.get $3 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add i32.const 11728 - local.get $5 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $3 i32.add local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 + local.get $4 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 3 i32.shl - local.get $4 + local.get $5 i32.add f64.load call $~lib/util/number/dtoa_buffered @@ -11171,7 +11068,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $6 local.get $0 call $~lib/string/String#substring local.set $0 @@ -11181,16 +11078,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $6 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 32064 @@ -11207,37 +11103,37 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=12 - local.set $5 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray + block $__inlined_func$~lib/util/string/joinStringArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 local.get $5 i32.const 1 i32.sub @@ -11250,63 +11146,62 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinStringArray end local.get $6 i32.eqz if global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $7 - i32.load local.tee $0 + local.get $4 + i32.load + local.tee $1 i32.store local.get $0 - i32.const 9232 - local.get $0 - select - local.set $0 - local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 9232 + local.get $1 + select br $__inlined_func$~lib/util/string/joinStringArray end loop $for-loop|0 - local.get $3 + local.get $0 local.get $5 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load - local.tee $4 + local.tee $7 i32.store offset=4 - local.get $4 + local.get $7 if - local.get $4 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.get $0 + local.get $2 i32.add - local.set $0 + local.set $2 end - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer + local.get $2 local.get $6 local.get $1 i32.const 20 @@ -11314,76 +11209,75 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $2 i32.mul - local.get $0 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store offset=8 i32.const 0 - local.set $3 + local.set $0 loop $for-loop|1 - local.get $3 + local.get $0 local.get $6 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load - local.tee $4 + local.tee $7 i32.store offset=4 - local.get $4 + local.get $7 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $4 - local.get $4 + local.get $7 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $7 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $4 + local.get $3 + local.get $7 i32.add - local.set $2 + local.set $3 end - local.get $5 + local.get $2 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add local.get $1 - local.get $5 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $2 - local.get $5 + local.get $3 i32.add - local.set $2 + local.set $3 end - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|1 end end @@ -11391,20 +11285,20 @@ local.get $6 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -11418,8 +11312,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 end - local.get $0 ) (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) @@ -11427,39 +11321,37 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinReferenceArray + block $__inlined_func$~lib/util/string/joinReferenceArray (result i32) local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 0 + i32.store offset=8 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.const 0 i32.lt_s if @@ -11468,15 +11360,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end - local.get $2 + local.get $3 i32.eqz if global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $2 i32.load local.tee $1 i32.store @@ -11488,7 +11379,6 @@ i32.const 9232 local.get $1 select - local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end i32.const 9232 @@ -11500,35 +11390,35 @@ i32.load i32.const 1 i32.shr_u - local.set $5 + local.set $4 loop $for-loop|0 - local.get $2 + local.get $1 local.get $3 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 if global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 13072 i32.store offset=8 - local.get $4 + local.get $5 local.get $0 i32.const 13072 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $5 + local.get $4 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -11537,18 +11427,18 @@ local.tee $0 i32.store offset=4 end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load local.tee $1 @@ -11557,9 +11447,9 @@ if global.get $~lib/memory/__stack_pointer local.tee $1 + local.get $1 i32.const 13072 i32.store offset=8 - local.get $1 local.get $0 i32.const 13072 call $~lib/string/String.__concat @@ -11570,8 +11460,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -11659,15 +11549,14 @@ i32.add end end + local.get $2 + i32.add local.set $1 local.get $0 local.get $3 local.get $1 - local.get $2 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $1 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -11690,59 +11579,59 @@ local.get $1 i32.const 65535 i32.and - local.tee $2 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.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -11904,7 +11793,6 @@ local.get $0 local.get $3 local.get $2 - local.tee $0 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -11959,10 +11847,10 @@ i32.add end end - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $2 ) (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) @@ -11972,31 +11860,27 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -12005,28 +11889,27 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $3 + local.get $7 i32.eqz if - local.get $4 - i64.load - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 i64.eqz if @@ -12035,7 +11918,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9824 - local.set $0 br $__inlined_func$~lib/util/number/utoa64 end local.get $2 @@ -12045,48 +11927,48 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.wrap_i64 - local.tee $3 local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -12097,10 +11979,10 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 local.get $3 + local.get $0 local.get $1 call $~lib/util/number/utoa32_dec_lut else @@ -12155,107 +12037,109 @@ i32.add end end - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 local.get $2 - local.get $1 + local.get $0 call $~lib/util/number/utoa64_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $5 + local.tee $0 i32.const 20 i32.add i32.mul i32.const 20 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store loop $for-loop|0 local.get $3 - local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $6 + i32.add + local.get $3 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 - local.get $5 + local.set $1 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add i32.const 9520 - local.get $5 + local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $1 i32.add - local.set $0 + local.set $1 end - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $3 br $for-loop|0 end end - local.get $7 - local.get $0 + local.get $5 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add local.tee $0 i32.gt_s if - local.get $1 + local.get $6 local.get $0 call $~lib/string/String#substring local.set $0 @@ -12265,16 +12149,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $6 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 32064 @@ -12291,7 +12174,7 @@ local.get $1 i64.const 0 i64.lt_s - local.tee $3 + local.tee $2 if local.get $0 i32.const 45 @@ -12305,7 +12188,7 @@ i64.const 10 i64.lt_u if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -12314,7 +12197,7 @@ i64.const 48 i64.or i64.store16 - local.get $3 + local.get $2 i32.const 1 i32.add return @@ -12325,60 +12208,59 @@ if local.get $1 i32.wrap_i64 + local.tee $3 local.tee $4 - local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $4 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $4 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $4 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $4 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $4 i32.const 100000000 i32.ge_u i32.add end end + local.get $2 + i32.add local.set $2 local.get $0 - local.get $4 - local.get $2 local.get $3 - i32.add - local.tee $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -12433,353 +12315,12 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 - ) - (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner0 - local.get $4 - i32.eqz - if - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9824 - local.set $0 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $2 - i64.sub - local.get $2 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $3 - 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 $6 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $3 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $6 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $3 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $3 - i32.const 3 - i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $7 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $7 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $6 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $4 - i32.const 3 - i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12802,59 +12343,59 @@ local.get $1 i32.const 255 i32.and - local.tee $2 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.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12863,35 +12404,35 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 + i32.load offset=12 + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -12900,16 +12441,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - local.get $3 + local.get $7 i32.eqz if - local.get $4 + local.get $3 i32.load8_u call $~lib/util/number/utoa32 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -12917,88 +12456,87 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 - i32.add - local.get $4 local.get $6 i32.add + local.get $2 + local.get $3 + i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $4 if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $1 - local.get $5 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $5 + local.get $0 + local.get $4 i32.add - local.set $2 + local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 - local.get $2 + local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $3 - local.get $4 + local.get $7 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.tee $1 + local.tee $0 i32.gt_s if + local.get $6 local.get $0 - local.get $1 call $~lib/string/String#substring - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -13009,8 +12547,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 end - local.get $0 ) (func $start:std/array~anonymous|53 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -13078,13 +12616,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -13284,20 +12822,20 @@ i32.add local.tee $3 i32.load8_u - local.set $6 + local.set $5 local.get $3 local.get $0 local.get $2 i32.add - local.tee $5 + 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 - local.get $6 i32.store8 local.get $2 i32.const 1 @@ -13459,8 +12997,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -13474,11 +13012,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -13486,87 +13023,86 @@ end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store8 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load8_u offset=2 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store8 offset=1 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -13581,16 +13117,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -13599,7 +13143,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -13610,48 +13154,56 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -13659,23 +13211,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -13685,11 +13237,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -13699,33 +13251,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -13733,27 +13283,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -13761,15 +13311,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -13780,7 +13330,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -13792,13 +13342,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -13809,9 +13359,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) @@ -13835,10 +13385,13 @@ i32.add local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $2 i32.store offset=12 @@ -13871,18 +13424,18 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 i32.const 4 @@ -13893,27 +13446,28 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $invalid - block $std/array/ArrayStr - block $std/array/Proxy - block $std/array/Dim - block $std/array/Ref - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner4 $std/array/Ref $folding-inner3 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner2 $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-inner1 $folding-inner2 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner4 $folding-inner4 $std/array/ArrayStr $folding-inner2 $invalid - end - return + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + block $std/array/ArrayStr + block $std/array/Proxy + block $std/array/Dim + block $std/array/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner3 $std/array/Ref $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner2 $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-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid end return end @@ -13923,33 +13477,34 @@ end return end - local.get $0 - call $~lib/array/Array~visit return end - unreachable + local.get $0 + call $~lib/array/Array~visit + return end - local.get $0 - call $~lib/array/Array~visit - return + unreachable end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + call $~lib/array/Array~visit return end local.get $0 - i32.load + i32.load offset=4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~setArgumentsLength (param $0 i32) local.get $0 @@ -14160,25 +13715,25 @@ i32.gt_s if (result i32) global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $6 local.get $4 i32.const 2 i32.shl local.get $0 i32.add - local.tee $6 - i32.load offset=4 local.tee $7 + i32.load offset=4 + local.tee $5 i32.store - local.get $5 local.get $6 + local.get $7 i32.load - local.tee $5 + local.tee $6 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $5 + local.get $6 local.get $3 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -14284,16 +13839,229 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) + (func $std/array/assertStableSortedForComplexObjects + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $folding-inner0 + 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 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i64.const 0 + i64.store offset=16 + local.get $3 + global.get $std/array/inputStabArr + local.tee $4 + i32.store offset=8 + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + i32.const 0 + local.get $4 + i32.load offset=12 + local.tee $5 + local.get $5 + i32.const 0 + i32.gt_s + select + local.set $6 + local.get $2 + local.get $5 + local.get $6 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $5 + i32.const 2 + i32.const 20 + i32.const 0 + call $~lib/rt/__newArray + local.tee $7 + i32.store + local.get $7 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.set $4 + local.get $5 + i32.const 2 + i32.shl + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $5 + i32.lt_u + if + local.get $0 + local.get $2 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load + local.tee $6 + i32.store + local.get $6 + if + local.get $7 + local.get $6 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + i32.const 4 + i32.add + 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 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $7 + i32.store + local.get $0 + i32.const 8880 + i32.store offset=4 + local.get $7 + i32.load offset=4 + local.get $7 + i32.load offset=12 + i32.const 8880 + call $~lib/util/sort/SORT + local.get $3 + local.get $7 + i32.store offset=12 + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.tee $2 + i32.store + local.get $2 + i32.load offset=12 + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + block $for-break0 + global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $1 + call $~lib/array/Array#__get + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.tee $4 + i32.store offset=20 + local.get $3 + i32.load + local.get $4 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + local.get $3 + i32.load offset=4 + local.get $4 + i32.load offset=4 + i32.ne + end + if + i32.const 0 + local.set $0 + br $for-break0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1042 + 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 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -14536,30 +14304,9 @@ (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 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $0 - local.get $1 - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14567,17 +14314,36 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 + local.tee $2 i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + i32.store + local.get $2 + i32.const 9520 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> (result i32) local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 + local.get $2 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 i32.const 1 i32.sub - local.tee $1 + local.tee $4 i32.const 0 i32.lt_s if @@ -14586,14 +14352,13 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $1 + local.get $4 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.load local.tee $0 i32.store @@ -14604,7 +14369,6 @@ else i32.const 9232 end - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -14624,28 +14388,28 @@ loop $for-loop|0 local.get $1 local.get $4 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $6 call $~lib/array/Array#toString - local.set $3 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $6 i32.store offset=8 local.get $0 - local.get $3 + local.get $6 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -14659,33 +14423,33 @@ local.tee $0 i32.store offset=4 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array#toString - 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 $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -14694,12 +14458,12 @@ i32.const 12 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 - local.get $0 return end i32.const 32064 @@ -14714,14 +14478,16 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (local $4 i64) + (local $5 f64) + (local $6 f32) (local $7 i32) (local $8 i32) - (local $9 f64) + (local $9 i32) (local $10 i32) - (local $11 f32) + (local $11 i32) + (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 172 i32.sub @@ -14884,10 +14650,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -14905,10 +14667,12 @@ local.get $0 local.get $2 i32.store - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end local.get $0 local.get $2 i32.store offset=4 @@ -14952,9 +14716,9 @@ i32.const 6 i32.const 1696 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 1 i32.const 1 i32.const 3 @@ -14965,12 +14729,12 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -14981,7 +14745,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 0 i32.const 2147483647 @@ -14992,12 +14756,12 @@ i32.const 6 i32.const 1760 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15008,7 +14772,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 0 i32.const -3 @@ -15019,12 +14783,12 @@ i32.const 6 i32.const 1792 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15035,7 +14799,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 i32.const -2 i32.const 2147483647 @@ -15046,12 +14810,12 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15062,7 +14826,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 1 i32.const 0 @@ -15073,12 +14837,12 @@ i32.const 6 i32.const 1856 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15095,43 +14859,43 @@ i32.const 7 i32.const 1888 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 i32.load offset=4 - local.set $4 + local.set $2 i32.const 1 - local.get $0 + local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 1 i32.gt_s select - local.set $1 + local.set $0 i32.const 3 - local.get $2 - local.get $2 + local.get $7 + local.get $7 i32.const 3 i32.gt_s select - local.set $2 + local.set $7 loop $for-loop|0 - local.get $1 - local.get $2 + local.get $0 + local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -15140,12 +14904,12 @@ i32.const 7 i32.const 1936 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 + i32.store offset=8 local.get $1 + local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15156,36 +14920,35 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.tee $1 + local.get $1 i32.load offset=4 - local.set $0 + local.set $2 i32.const 0 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 0 i32.gt_s select - local.set $5 - loop $for-loop|03 - local.get $2 - local.get $5 - i32.gt_s + local.set $0 + loop $for-loop|01 + local.get $0 + local.get $7 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|03 + local.set $0 + br $for-loop|01 end end i32.const 5 @@ -15211,35 +14974,35 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $2 i32.const 0 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 0 i32.gt_s select local.set $0 - local.get $2 + local.get $7 i32.const 3 i32.sub - local.tee $2 + local.tee $7 i32.const 0 - local.get $2 + local.get $7 i32.const 0 i32.gt_s select - local.set $2 - loop $for-loop|05 + local.set $7 + loop $for-loop|03 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 1 i32.store @@ -15247,7 +15010,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|05 + br $for-loop|03 end end i32.const 5 @@ -15273,10 +15036,10 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $2 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 2 i32.sub local.tee $0 @@ -15285,24 +15048,24 @@ i32.const 0 i32.gt_s select - local.set $5 - loop $for-loop|07 - local.get $2 - local.get $5 - i32.gt_s + local.set $0 + loop $for-loop|05 + local.get $0 + local.get $7 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 2 i32.store - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|07 + local.set $0 + br $for-loop|05 end end i32.const 5 @@ -15328,32 +15091,32 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $2 i32.const 1 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 1 i32.gt_s select local.set $0 i32.const 0 - local.get $2 - local.get $2 + local.get $7 + local.get $7 i32.const 0 i32.gt_s select - local.set $2 - loop $for-loop|09 + local.set $7 + loop $for-loop|07 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 0 i32.store @@ -15361,7 +15124,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|09 + br $for-loop|07 end end i32.const 5 @@ -15847,23 +15610,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $2 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - local.get $2 call $~lib/array/Array#concat local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15877,9 +15640,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.load offset=12 i32.const 3 i32.ne @@ -15908,19 +15671,19 @@ i32.const 3 i32.const 2272 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 call $~lib/array/Array#concat drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15971,30 +15734,30 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 46 call $~lib/array/Array#push drop - local.get $2 + local.get $0 i32.const 47 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store local.get $1 - local.get $0 local.get $2 + local.get $0 call $~lib/array/Array#concat local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16006,7 +15769,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=12 i32.const 2 i32.ne @@ -16116,9 +15879,9 @@ i32.const 3 i32.const 2304 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load offset=12 if i32.const 0 @@ -16131,15 +15894,15 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store offset=8 local.get $1 - local.get $2 local.get $0 + local.get $2 call $~lib/array/Array#concat - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.load offset=12 i32.const 3 i32.ne @@ -16151,7 +15914,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=12 if i32.const 0 @@ -16174,21 +15937,21 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2384 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16213,21 +15976,21 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2480 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16252,21 +16015,21 @@ i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2576 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16291,21 +16054,21 @@ i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2672 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16330,21 +16093,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2768 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16369,21 +16132,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2864 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16408,21 +16171,21 @@ i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2960 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16447,21 +16210,21 @@ i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3056 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16486,21 +16249,21 @@ i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3152 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16525,21 +16288,21 @@ i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3248 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16564,21 +16327,21 @@ i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3344 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16603,21 +16366,21 @@ i32.const -3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3440 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16864,13 +16627,13 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store - local.get $5 + local.get $0 i32.load offset=12 - local.tee $0 - i32.const 1 - i32.lt_s + local.tee $1 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -16879,28 +16642,28 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.load - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $1 i32.const 1 i32.sub local.tee $1 i32.const 2 i32.shl - local.tee $0 + local.tee $8 call $~lib/memory/memory.copy - local.get $0 - local.get $4 + local.get $2 + local.get $8 i32.add i32.const 0 i32.store - local.get $5 + local.get $0 local.get $1 i32.store offset=12 global.set $std/array/i @@ -17122,26 +16885,26 @@ i32.const 3 i32.const 3488 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 3 i32.const 2 i32.const 3 i32.const 3536 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17154,23 +16917,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const 4 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3568 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17183,23 +16946,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 1 i32.const 5 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 4 i32.const 2 i32.const 3 i32.const 3600 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17212,14 +16975,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 + local.get $1 local.get $0 - local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17232,23 +16995,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3648 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17261,23 +17024,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const -1 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3680 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17290,23 +17053,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -3 i32.const -1 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3712 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17318,15 +17081,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const -1 i32.const -3 call $~lib/array/Array#slice - 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.load offset=12 if i32.const 0 @@ -17336,7 +17099,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 10 i32.const 2147483647 call $~lib/array/Array#slice @@ -17360,7 +17123,7 @@ i32.store local.get $1 i32.load offset=4 - local.set $6 + local.set $2 i32.const 0 local.set $0 local.get $1 @@ -17372,37 +17135,37 @@ local.get $1 i32.const 1 i32.shr_u - local.set $5 + local.set $7 local.get $1 i32.const 1 i32.sub - local.set $4 + local.set $1 loop $while-continue|0 local.get $0 - local.get $5 + local.get $7 i32.lt_u if local.get $0 i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add - local.tee $1 + local.tee $8 i32.load - local.set $2 + local.set $9 + local.get $8 local.get $1 - local.get $4 local.get $0 i32.sub i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add - local.tee $1 + local.tee $8 i32.load i32.store - local.get $1 - local.get $2 + local.get $8 + local.get $9 i32.store local.get $0 i32.const 1 @@ -17522,23 +17285,26 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#reverse - local.tee $2 + i32.load offset=4 + local.get $1 + i32.load offset=12 + call $~lib/util/bytes/REVERSE + local.get $1 i32.store offset=16 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 - loop $for-loop|010 + local.set $2 + loop $for-loop|08 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17557,7 +17323,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|010 + br $for-loop|08 end end global.get $~lib/memory/__stack_pointer @@ -17571,23 +17337,26 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#reverse - local.tee $2 + i32.load offset=4 + local.get $1 + i32.load offset=12 + call $~lib/util/bytes/REVERSE + local.get $1 i32.store offset=4 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|1 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17620,23 +17389,26 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#reverse - local.tee $2 + i32.load offset=4 + local.get $1 + i32.load offset=12 + call $~lib/util/bytes/REVERSE + local.get $1 i32.store offset=12 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|2 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17670,22 +17442,22 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=20 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|3 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17719,22 +17491,22 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=24 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|4 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17768,22 +17540,22 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=28 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|5 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17807,52 +17579,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 + i32.const -1 + local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $1 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|011 + local.set $2 + loop $while-continue|012 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 44 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf - local.get $0 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|012 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i if @@ -17865,52 +17636,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf12 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf39 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf12 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf39 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|013 + local.set $2 + loop $while-continue|040 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf12 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf39 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|013 + br $while-continue|040 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 2 @@ -17925,52 +17695,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf14 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf41 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf14 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf41 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|015 + local.set $2 + loop $while-continue|042 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf14 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf41 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|015 + br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -17985,52 +17754,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 100 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf16 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf43 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 100 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf16 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf43 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|017 + local.set $2 + loop $while-continue|044 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf16 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf43 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|044 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -18047,7 +17815,9 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf18 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf45 local.get $1 i32.load offset=12 local.tee $2 @@ -18056,11 +17826,7 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf18 - end + br_if $__inlined_func$~lib/array/Array#indexOf45 local.get $2 i32.const 100 i32.sub @@ -18074,7 +17840,7 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|019 + loop $while-continue|046 local.get $0 local.get $2 i32.lt_s @@ -18087,12 +17853,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf18 + br_if $__inlined_func$~lib/array/Array#indexOf45 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|019 + br $while-continue|046 end end i32.const -1 @@ -18115,7 +17881,9 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf20 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf47 local.get $1 i32.load offset=12 local.tee $2 @@ -18124,11 +17892,7 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf20 - end + br_if $__inlined_func$~lib/array/Array#indexOf47 local.get $2 i32.const 2 i32.sub @@ -18142,7 +17906,7 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|021 + loop $while-continue|048 local.get $0 local.get $2 i32.lt_s @@ -18155,12 +17919,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf20 + br_if $__inlined_func$~lib/array/Array#indexOf47 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|021 + br $while-continue|048 end end i32.const -1 @@ -18183,7 +17947,9 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf22 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf49 local.get $1 i32.load offset=12 local.tee $2 @@ -18192,11 +17958,7 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf22 - end + br_if $__inlined_func$~lib/array/Array#indexOf49 local.get $2 i32.const 4 i32.sub @@ -18210,7 +17972,7 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|023 + loop $while-continue|050 local.get $0 local.get $2 i32.lt_s @@ -18223,12 +17985,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf22 + br_if $__inlined_func$~lib/array/Array#indexOf49 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|050 end end i32.const -1 @@ -18249,52 +18011,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf24 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf51 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf24 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf51 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|025 + local.set $2 + loop $while-continue|052 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf24 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf51 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|025 + br $while-continue|052 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -18309,52 +18070,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf26 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf53 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 1 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf26 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf53 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|027 + local.set $2 + loop $while-continue|054 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf26 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf53 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|027 + br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -18369,52 +18129,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 2 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf28 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf55 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 2 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf28 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf55 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|029 + local.set $2 + loop $while-continue|056 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf28 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf55 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|029 + br $while-continue|056 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 3 @@ -18443,19 +18202,19 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=12 - local.tee $4 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $7 select br_if $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|010 + loop $while-continue|057 local.get $0 - local.get $4 + local.get $7 i32.lt_s if local.get $0 @@ -18472,7 +18231,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|010 + br $while-continue|057 end end i32.const -1 @@ -18505,19 +18264,19 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=12 - local.tee $4 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $7 select br_if $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|037 + loop $while-continue|058 local.get $0 - local.get $4 + local.get $7 i32.lt_s if local.get $0 @@ -18534,7 +18293,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|037 + br $while-continue|058 end end i32.const -1 @@ -18557,49 +18316,49 @@ i32.const 3 i32.const 4064 call $~lib/rt/__newArray - local.tee $0 + local.tee $2 i32.store offset=24 i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $2 i32.load offset=12 - local.tee $4 - local.set $2 + local.tee $0 + local.set $7 i32.const -1 local.set $1 block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $4 + local.get $0 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $2 - local.get $4 + local.get $0 + local.get $7 i32.add - local.get $4 + local.get $0 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $4 - i32.ge_s + local.get $7 + local.get $0 + local.get $7 + i32.le_s select - local.get $2 + local.get $7 i32.const 0 i32.lt_s select - local.set $2 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|00 - local.get $2 + local.set $7 + loop $while-continue|09 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 + local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $7 i32.add i32.load i32.const 2 @@ -18608,8 +18367,8 @@ local.get $1 i32.const 1 i32.sub - local.set $2 - br $while-continue|00 + local.set $0 + br $while-continue|09 end end i32.const -1 @@ -18628,61 +18387,61 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $2 i32.load offset=12 - local.tee $4 - local.set $2 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#lastIndexOf5 - local.get $4 - i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf5 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf14 local.get $2 - local.get $4 + i32.load offset=12 + local.tee $7 + i32.eqz + br_if $__inlined_func$~lib/array/Array#lastIndexOf14 + local.get $1 + local.get $7 i32.add - local.get $4 + local.get $7 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $4 + local.get $1 + local.get $1 + local.get $7 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select - local.set $2 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|06 - local.get $2 + local.set $1 + loop $while-continue|015 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf5 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf14 + local.get $0 i32.const 1 i32.sub - local.set $2 - br $while-continue|06 + local.set $0 + br $while-continue|015 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18693,16 +18452,14 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf7 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf16 + local.get $2 i32.load offset=12 local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf7 - end + br_if $__inlined_func$~lib/array/Array#lastIndexOf16 local.get $1 i32.const 1 i32.sub @@ -18711,35 +18468,35 @@ i32.const 3 i32.le_s select - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 - loop $while-continue|030 - local.get $1 + local.set $1 + loop $while-continue|059 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf7 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf16 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|030 + local.set $0 + br $while-continue|059 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18750,16 +18507,14 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf31 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf60 + local.get $2 i32.load offset=12 local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf31 - end + br_if $__inlined_func$~lib/array/Array#lastIndexOf60 local.get $1 i32.const 1 i32.sub @@ -18768,35 +18523,35 @@ i32.const 2 i32.le_s select - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 - loop $while-continue|032 - local.get $1 + local.set $1 + loop $while-continue|061 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf31 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf60 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|032 + local.set $0 + br $while-continue|061 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1552 @@ -18805,48 +18560,46 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf33 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf62 + local.get $2 i32.load offset=12 local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf33 - end + br_if $__inlined_func$~lib/array/Array#lastIndexOf62 local.get $1 i32.const 2 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 - loop $while-continue|034 - local.get $1 + local.set $1 + loop $while-continue|063 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf33 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf62 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|034 + local.set $0 + br $while-continue|063 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1552 @@ -18855,25 +18608,22 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf35 - local.get $0 - local.tee $1 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf64 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $1 i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf35 - end - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf64 + local.get $1 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 i32.load offset=4 local.set $1 - loop $while-continue|036 + loop $while-continue|065 local.get $0 i32.const 0 i32.ge_s @@ -18886,12 +18636,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf35 + br_if $__inlined_func$~lib/array/Array#lastIndexOf64 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|065 end end i32.const -1 @@ -18910,52 +18660,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf37 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf17 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf37 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf17 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|038 + local.set $2 + loop $while-continue|018 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 44 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf37 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf17 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|038 + br $while-continue|018 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -18968,52 +18717,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf39 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf20 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf39 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf20 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|040 + local.set $2 + loop $while-continue|021 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf39 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf20 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|040 + br $while-continue|021 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19026,52 +18774,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf41 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf23 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf41 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf23 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|042 + local.set $2 + loop $while-continue|024 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf41 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf23 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.ge_s if @@ -19084,52 +18831,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 100 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf43 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf26 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 100 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf43 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf26 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|044 + local.set $2 + loop $while-continue|027 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf43 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf26 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|044 + br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.ge_s if @@ -19142,10 +18888,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf45 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf29 + local.get $0 i32.load offset=12 local.tee $2 i32.const -100 @@ -19153,49 +18901,45 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf45 - end + br_if $__inlined_func$~lib/array/Array#indexOf29 local.get $2 i32.const 100 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 - i32.load offset=4 local.set $1 - loop $while-continue|046 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|030 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf45 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf29 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|046 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19208,10 +18952,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf47 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf32 + local.get $0 i32.load offset=12 local.tee $2 i32.const -2 @@ -19219,49 +18965,45 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf47 - end + br_if $__inlined_func$~lib/array/Array#indexOf32 local.get $2 i32.const 2 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 - i32.load offset=4 local.set $1 - loop $while-continue|048 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|033 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf47 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf32 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19274,10 +19016,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf49 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf35 + local.get $0 i32.load offset=12 local.tee $2 i32.const -4 @@ -19285,49 +19029,45 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf49 - end + br_if $__inlined_func$~lib/array/Array#indexOf35 local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 - i32.load offset=4 local.set $1 - loop $while-continue|050 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|036 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf49 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf35 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|050 + local.set $1 + br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19340,52 +19080,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf51 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf38 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf51 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf38 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|052 + local.set $2 + loop $while-continue|039 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf51 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf38 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|052 + br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19398,52 +19137,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf53 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf42 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 1 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf53 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf42 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|054 + local.set $2 + loop $while-continue|043 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf53 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf42 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|043 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19456,52 +19194,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 2 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf55 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf46 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 2 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf55 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf46 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|056 + local.set $2 + loop $while-continue|047 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf55 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf46 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|056 + br $while-continue|047 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19538,12 +19275,11 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|047 + loop $while-continue|066 local.get $0 local.get $2 i32.lt_s if - i32.const 1 i32.const 1 local.get $0 i32.const 2 @@ -19551,20 +19287,20 @@ local.get $1 i32.add f32.load - local.tee $11 - local.get $11 - f32.ne - local.get $11 + local.tee $6 f32.const nan:0x400000 f32.eq - select + local.get $6 + local.get $6 + f32.ne + i32.or br_if $__inlined_func$~lib/array/Array#includes drop local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|047 + br $while-continue|066 end end i32.const 0 @@ -19604,12 +19340,11 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|04857 + loop $while-continue|067 local.get $0 local.get $2 i32.lt_s if - i32.const 1 i32.const 1 local.get $0 i32.const 3 @@ -19617,20 +19352,20 @@ local.get $1 i32.add f64.load - local.tee $9 - local.get $9 - f64.ne - local.get $9 + local.tee $5 f64.const nan:0x8000000000000 f64.eq - select + local.get $5 + local.get $5 + f64.ne + i32.or br_if $__inlined_func$~lib/array/Array#includes drop local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|04857 + br $while-continue|067 end end i32.const 0 @@ -19725,9 +19460,9 @@ i32.const 3 i32.const 4176 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice @@ -19740,12 +19475,12 @@ i32.const 3 i32.const 4224 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19762,12 +19497,12 @@ i32.const 3 i32.const 4272 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19785,9 +19520,9 @@ i32.const 3 i32.const 4304 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 0 i32.const 0 call $~lib/array/Array#splice @@ -19800,12 +19535,12 @@ i32.const 3 i32.const 4352 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19822,12 +19557,12 @@ i32.const 3 i32.const 4384 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19845,9 +19580,9 @@ i32.const 3 i32.const 4432 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice @@ -19860,12 +19595,12 @@ i32.const 3 i32.const 4480 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19882,12 +19617,12 @@ i32.const 3 i32.const 4512 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19905,9 +19640,9 @@ i32.const 3 i32.const 4544 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 2 i32.const 2 call $~lib/array/Array#splice @@ -19920,12 +19655,12 @@ i32.const 3 i32.const 4592 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19942,12 +19677,12 @@ i32.const 3 i32.const 4624 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19965,9 +19700,9 @@ i32.const 3 i32.const 4656 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 0 i32.const 1 call $~lib/array/Array#splice @@ -19980,12 +19715,12 @@ i32.const 3 i32.const 4704 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20002,12 +19737,12 @@ i32.const 3 i32.const 4736 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20025,9 +19760,9 @@ i32.const 3 i32.const 4784 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice @@ -20040,12 +19775,12 @@ i32.const 3 i32.const 4832 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20062,12 +19797,12 @@ i32.const 3 i32.const 4864 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20085,9 +19820,9 @@ i32.const 3 i32.const 4912 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice @@ -20100,12 +19835,12 @@ i32.const 3 i32.const 4960 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20122,12 +19857,12 @@ i32.const 3 i32.const 4992 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20145,9 +19880,9 @@ i32.const 3 i32.const 5024 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -2 i32.const 1 call $~lib/array/Array#splice @@ -20160,12 +19895,12 @@ i32.const 3 i32.const 5072 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20182,12 +19917,12 @@ i32.const 3 i32.const 5104 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20205,9 +19940,9 @@ i32.const 3 i32.const 5152 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -7 i32.const 1 call $~lib/array/Array#splice @@ -20220,12 +19955,12 @@ i32.const 3 i32.const 5200 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20242,12 +19977,12 @@ i32.const 3 i32.const 5232 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20265,9 +20000,9 @@ i32.const 3 i32.const 5280 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -2 i32.const -1 call $~lib/array/Array#splice @@ -20280,12 +20015,12 @@ i32.const 3 i32.const 5328 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20302,12 +20037,12 @@ i32.const 3 i32.const 5360 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20325,9 +20060,9 @@ i32.const 3 i32.const 5408 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 1 i32.const -2 call $~lib/array/Array#splice @@ -20340,12 +20075,12 @@ i32.const 3 i32.const 5456 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20362,12 +20097,12 @@ i32.const 3 i32.const 5488 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20385,9 +20120,9 @@ i32.const 3 i32.const 5536 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 4 i32.const 0 call $~lib/array/Array#splice @@ -20400,12 +20135,12 @@ i32.const 3 i32.const 5584 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20422,12 +20157,12 @@ i32.const 3 i32.const 5616 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20445,9 +20180,9 @@ i32.const 3 i32.const 5664 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 7 i32.const 0 call $~lib/array/Array#splice @@ -20460,12 +20195,12 @@ i32.const 3 i32.const 5712 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20482,12 +20217,12 @@ i32.const 3 i32.const 5744 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20505,9 +20240,9 @@ i32.const 3 i32.const 5792 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 7 i32.const 5 call $~lib/array/Array#splice @@ -20520,12 +20255,12 @@ i32.const 3 i32.const 5840 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20542,12 +20277,12 @@ i32.const 3 i32.const 5872 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20565,15 +20300,15 @@ i32.const 8 i32.const 5920 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#splice - local.tee $0 + local.tee $1 i32.store offset=20 - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -20583,7 +20318,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -20735,34 +20470,34 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 3 i32.const 2 i32.const 12 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20774,87 +20509,87 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store i32.const 0 - local.get $0 + local.get $1 i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $7 + local.get $7 i32.const 0 i32.gt_s select - local.set $5 - local.get $1 + local.set $8 + local.get $2 i32.const 1 - local.get $3 - local.get $5 + local.get $7 + local.get $8 i32.sub - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 1 i32.gt_s select - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select - local.tee $6 + local.tee $2 i32.const 2 i32.const 12 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $9 i32.store - local.get $7 + local.get $9 i32.load offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.tee $2 - local.get $5 + local.tee $10 + local.get $8 i32.const 2 i32.shl i32.add - local.tee $1 - local.get $6 + local.tee $11 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $3 - local.get $5 - local.get $6 + local.get $7 + local.get $2 + local.get $8 i32.add - local.tee $5 + local.tee $8 i32.ne if - local.get $1 - local.get $5 + local.get $11 + local.get $8 i32.const 2 i32.shl - local.get $2 + local.get $10 i32.add - local.get $3 - local.get $5 + local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end - local.get $0 - local.get $3 - local.get $6 + local.get $1 + local.get $7 + local.get $2 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store offset=4 - local.get $7 + local.get $9 i32.load offset=12 i32.const 1 i32.ne @@ -20867,12 +20602,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.const 0 call $~lib/array/Array#__get - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.eqz if i32.const 6080 @@ -20882,7 +20617,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load i32.const 1 i32.ne @@ -20894,7 +20629,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=12 i32.const 2 i32.ne @@ -20906,7 +20641,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get if @@ -20918,7 +20653,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.tee $0 @@ -20979,55 +20714,55 @@ call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6144 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $0 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex - loop $for-loop|059 + loop $for-loop|075 local.get $2 - local.get $4 + local.get $0 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select - local.get $0 + local.get $1 i32.gt_s if - local.get $4 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $4 i32.const 6144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|059 + local.set $1 + br $for-loop|075 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i if @@ -21041,55 +20776,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6176 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex60 - loop $for-loop|061 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex76 + loop $for-loop|077 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6176 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex60 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex76 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|061 + local.set $1 + br $for-loop|077 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -21105,55 +20840,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6208 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex62 - loop $for-loop|063 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex78 + loop $for-loop|079 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6208 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex62 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex78 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|063 + local.set $1 + br $for-loop|079 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21169,55 +20904,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6240 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex64 - loop $for-loop|065 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex80 + loop $for-loop|081 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6240 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex64 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex80 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|065 + local.set $1 + br $for-loop|081 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21249,55 +20984,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6272 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex66 - loop $for-loop|067 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex83 + loop $for-loop|084 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6272 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex66 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex83 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|067 + local.set $1 + br $for-loop|084 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21340,55 +21075,55 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6304 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $0 i32.load offset=12 local.set $2 - block $__inlined_func$~lib/array/Array#findIndex68 - loop $for-loop|069 + block $__inlined_func$~lib/array/Array#findIndex85 + loop $for-loop|086 local.get $2 - local.get $4 + local.get $0 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select - local.get $0 + local.get $1 i32.gt_s if - local.get $4 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $4 i32.const 6304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex68 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex85 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|069 + local.set $1 + br $for-loop|086 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21450,7 +21185,7 @@ i32.sub local.set $0 block $__inlined_func$~lib/array/Array#findLastIndex - loop $for-loop|058 + loop $for-loop|088 local.get $0 i32.const 0 i32.ge_s @@ -21474,7 +21209,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|058 + br $for-loop|088 end end i32.const -1 @@ -21499,8 +21234,8 @@ i32.const 1 i32.sub local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex59 - loop $for-loop|060 + block $__inlined_func$~lib/array/Array#findLastIndex89 + loop $for-loop|090 local.get $0 i32.const 0 i32.ge_s @@ -21519,12 +21254,12 @@ i32.const 6416 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex59 + br_if $__inlined_func$~lib/array/Array#findLastIndex89 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|060 + br $for-loop|090 end end i32.const -1 @@ -21551,8 +21286,8 @@ i32.const 1 i32.sub local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex61 - loop $for-loop|062 + block $__inlined_func$~lib/array/Array#findLastIndex91 + loop $for-loop|092 local.get $0 i32.const 0 i32.ge_s @@ -21571,12 +21306,12 @@ i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex61 + br_if $__inlined_func$~lib/array/Array#findLastIndex91 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|062 + br $for-loop|092 end end i32.const -1 @@ -21603,8 +21338,8 @@ i32.const 1 i32.sub local.set $1 - block $__inlined_func$~lib/array/Array#findLastIndex63 - loop $for-loop|064 + block $__inlined_func$~lib/array/Array#findLastIndex93 + loop $for-loop|094 local.get $1 i32.const 0 i32.ge_s @@ -21623,12 +21358,12 @@ i32.const 6480 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex63 + br_if $__inlined_func$~lib/array/Array#findLastIndex93 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|064 + br $for-loop|094 end end i32.const -1 @@ -21650,7 +21385,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6512 @@ -21658,35 +21393,35 @@ block $__inlined_func$~lib/array/Array#every (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|070 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|095 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -21697,7 +21432,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|070 + br $for-loop|095 end end i32.const 1 @@ -21714,54 +21449,54 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6544 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every71 (result i32) + block $__inlined_func$~lib/array/Array#every96 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|072 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|097 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every71 + br_if $__inlined_func$~lib/array/Array#every96 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|072 + br $for-loop|097 end end i32.const 1 @@ -21777,54 +21512,54 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6576 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every73 (result i32) + block $__inlined_func$~lib/array/Array#every98 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|074 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|099 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every73 + br_if $__inlined_func$~lib/array/Array#every98 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|074 + br $for-loop|099 end end i32.const 1 @@ -21857,54 +21592,54 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6608 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every75 (result i32) + block $__inlined_func$~lib/array/Array#every101 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|076 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0102 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6608 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every75 + br_if $__inlined_func$~lib/array/Array#every101 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|076 + br $for-loop|0102 end end i32.const 1 @@ -21947,54 +21682,54 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6640 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every77 (result i32) + block $__inlined_func$~lib/array/Array#every103 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|078 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $2 + loop $for-loop|0104 + local.get $2 local.get $0 - local.get $4 - i32.gt_s + i32.load offset=12 + local.tee $7 + local.get $2 + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $0 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every77 + br_if $__inlined_func$~lib/array/Array#every103 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|078 + br $for-loop|0104 end end i32.const 1 @@ -22042,7 +21777,7 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6672 @@ -22050,35 +21785,35 @@ block $__inlined_func$~lib/array/Array#some (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|079 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $2 + loop $for-loop|0106 + local.get $2 local.get $0 - local.get $4 - i32.gt_s + i32.load offset=12 + local.tee $7 + local.get $2 + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $0 i32.const 6672 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -22088,7 +21823,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|079 + br $for-loop|0106 end end i32.const 0 @@ -22105,53 +21840,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6704 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some80 (result i32) + block $__inlined_func$~lib/array/Array#some107 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|081 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0108 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some80 + br_if $__inlined_func$~lib/array/Array#some107 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|081 + br $for-loop|0108 end end i32.const 0 @@ -22167,53 +21902,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6736 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some82 (result i32) + block $__inlined_func$~lib/array/Array#some109 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|083 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0110 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6736 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some82 + br_if $__inlined_func$~lib/array/Array#some109 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|083 + br $for-loop|0110 end end i32.const 0 @@ -22245,53 +21980,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6768 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some84 (result i32) + block $__inlined_func$~lib/array/Array#some112 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|085 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0113 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some84 + br_if $__inlined_func$~lib/array/Array#some112 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|085 + br $for-loop|0113 end end i32.const 0 @@ -22335,53 +22070,53 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6800 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some86 (result i32) + block $__inlined_func$~lib/array/Array#some114 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|087 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $2 + loop $for-loop|0115 + local.get $2 local.get $0 - local.get $4 - i32.gt_s + i32.load offset=12 + local.tee $7 + local.get $2 + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $0 i32.const 6800 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some86 + br_if $__inlined_func$~lib/array/Array#some114 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|087 + br $for-loop|0115 end end i32.const 0 @@ -22430,29 +22165,29 @@ global.set $std/array/i global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6832 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $0 i32.load offset=12 local.set $2 - loop $for-loop|06988 + loop $for-loop|0117 local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 local.get $0 + i32.load offset=12 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22462,7 +22197,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $0 i32.const 6832 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22470,7 +22205,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|06988 + br $for-loop|0117 end end global.get $std/array/i @@ -22489,29 +22224,29 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6864 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|071 + local.set $0 + loop $for-loop|0119 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 @@ -22521,7 +22256,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $2 i32.const 6864 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22529,7 +22264,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|071 + br $for-loop|0119 end end global.get $std/array/i @@ -22564,29 +22299,29 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6896 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|07489 + local.set $0 + loop $for-loop|0122 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 @@ -22596,7 +22331,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $2 i32.const 6896 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22604,7 +22339,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|07489 + br $for-loop|0122 end end global.get $std/array/i @@ -22650,29 +22385,29 @@ global.set $std/array/i global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6928 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $0 i32.load offset=12 local.set $2 - loop $for-loop|07690 + loop $for-loop|0124 local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 local.get $0 + i32.load offset=12 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22682,7 +22417,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $0 i32.const 6928 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22690,7 +22425,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|07690 + br $for-loop|0124 end end global.get $std/array/i @@ -22738,29 +22473,29 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6960 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $0 i32.load offset=12 local.set $2 - loop $for-loop|07991 + loop $for-loop|0127 local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 local.get $0 + i32.load offset=12 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22770,7 +22505,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $0 i32.const 6960 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22778,7 +22513,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|07991 + br $for-loop|0127 end end global.get $~lib/memory/__stack_pointer @@ -22852,7 +22587,7 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $3 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6992 @@ -22869,30 +22604,30 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $7 i32.const 0 i32.store + local.get $7 local.get $0 - local.get $3 i32.load offset=12 - local.tee $6 + local.tee $7 i32.const 2 i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $8 i32.store - local.get $7 + local.get $8 i32.load offset=4 - local.set $4 - loop $for-loop|08193 - local.get $6 - local.get $3 - i32.load offset=12 - local.tee $0 + local.set $9 + loop $for-loop|0129 + local.get $7 local.get $0 - local.get $6 - i32.gt_s + i32.load offset=12 + local.tee $10 + local.get $7 + local.get $10 + i32.lt_s select local.get $1 i32.gt_s @@ -22900,20 +22635,20 @@ local.get $1 i32.const 2 i32.shl - local.tee $2 - local.get $3 + local.tee $10 + local.get $0 i32.load offset=4 i32.add i32.load - local.set $0 + local.set $11 i32.const 3 global.set $~argumentsLength - local.get $2 - local.get $4 + local.get $9 + local.get $10 i32.add - local.get $0 + local.get $11 local.get $1 - local.get $3 + local.get $0 i32.const 6992 i32.load call_indirect $0 (type $i32_i32_i32_=>_f32) @@ -22922,16 +22657,16 @@ i32.const 1 i32.add local.set $1 - br $for-loop|08193 + br $for-loop|0129 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=12 - local.get $7 + local.get $8 i32.load offset=12 i32.const 4 i32.ne @@ -22943,10 +22678,10 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 0 call $~lib/array/Array#__get - local.set $11 + local.set $6 global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -22955,7 +22690,7 @@ i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s - local.get $11 + local.get $6 f32.ne if i32.const 0 @@ -22968,14 +22703,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7024 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7024 call $~lib/array/Array#map global.get $std/array/i @@ -23008,14 +22743,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7056 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7056 call $~lib/array/Array#map global.get $std/array/i @@ -23140,14 +22875,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7152 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7152 call $~lib/array/Array#filter drop @@ -23181,14 +22916,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7184 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7184 call $~lib/array/Array#filter drop @@ -23289,56 +23024,56 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7248 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|094 + local.set $7 + loop $for-loop|0136 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|094 + br $for-loop|0136 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23354,56 +23089,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7280 i32.store offset=8 - i32.const 4 - local.set $5 i32.const 0 local.set $1 - local.get $4 + i32.const 4 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|096 + local.set $7 + loop $for-loop|0138 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|096 + br $for-loop|0138 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23419,56 +23154,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7312 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|098 + local.set $7 + loop $for-loop|0140 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|098 + br $for-loop|0140 end end - local.get $5 + local.get $0 i32.eqz if i32.const 0 @@ -23481,56 +23216,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7344 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0100 + local.set $7 + loop $for-loop|0142 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0100 + br $for-loop|0142 end end - local.get $5 + local.get $0 if i32.const 0 i32.const 1552 @@ -23542,56 +23277,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7376 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0102 + local.set $7 + loop $for-loop|0144 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0102 + br $for-loop|0144 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23623,56 +23358,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7408 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0104 + local.set $7 + loop $for-loop|0147 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0104 + br $for-loop|0147 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23715,56 +23450,56 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7440 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0106 + local.set $7 + loop $for-loop|0149 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0106 + br $for-loop|0149 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -23811,37 +23546,37 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7472 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|090 + loop $for-loop|0151 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7472 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -23850,7 +23585,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|090 + br $for-loop|0151 end end local.get $0 @@ -23869,37 +23604,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7504 i32.store offset=8 i32.const 4 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|092 + loop $for-loop|0153 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7504 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -23908,7 +23643,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|092 + br $for-loop|0153 end end local.get $0 @@ -23927,37 +23662,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7536 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|094107 + loop $for-loop|0155 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7536 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -23966,7 +23701,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|094107 + br $for-loop|0155 end end local.get $0 @@ -23982,37 +23717,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7568 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|096108 + loop $for-loop|0157 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7568 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24021,7 +23756,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|096108 + br $for-loop|0157 end end local.get $0 @@ -24036,37 +23771,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7600 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|098109 + loop $for-loop|0159 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7600 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24075,7 +23810,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|098109 + br $for-loop|0159 end end local.get $0 @@ -24110,37 +23845,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7632 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|0101 + loop $for-loop|0162 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7632 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24149,7 +23884,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0101 + br $for-loop|0162 end end local.get $0 @@ -24195,37 +23930,37 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7664 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|0103 + loop $for-loop|0164 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7664 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24234,7 +23969,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0103 + br $for-loop|0164 end end local.get $0 @@ -24305,181 +24040,181 @@ i32.const 20 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load offset=4 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=20 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 80 i32.store offset=4 - local.get $1 - i32.const 0 local.get $0 + i32.const 0 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 90 i32.store - local.get $0 + local.get $1 i32.const 90 i32.store offset=4 - local.get $1 - i32.const 1 local.get $0 + i32.const 1 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=28 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 95 i32.store offset=4 - local.get $1 - i32.const 2 local.get $0 + i32.const 2 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 100 i32.store offset=4 - local.get $1 - i32.const 3 local.get $0 + i32.const 3 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=32 - local.get $0 + local.get $1 i32.const 80 i32.store - local.get $0 + local.get $1 i32.const 110 i32.store offset=4 - local.get $1 - i32.const 4 local.get $0 + i32.const 4 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=36 - local.get $0 + local.get $1 i32.const 110 i32.store - local.get $0 + local.get $1 i32.const 115 i32.store offset=4 - local.get $1 - i32.const 5 local.get $0 + i32.const 5 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=40 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 120 i32.store offset=4 - local.get $1 - i32.const 6 local.get $0 + i32.const 6 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=44 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 125 i32.store offset=4 - local.get $1 - i32.const 7 local.get $0 + i32.const 7 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 130 i32.store offset=4 - local.get $1 - i32.const 8 local.get $0 + i32.const 8 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=52 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 135 i32.store offset=4 - local.get $1 - i32.const 9 local.get $0 + i32.const 9 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=56 - local.get $0 + local.get $1 i32.const 75 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 10 local.get $0 + i32.const 10 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=60 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 11 local.get $0 - call $~lib/array/Array#__uset + i32.const 11 local.get $1 + call $~lib/array/Array#__uset + local.get $0 global.set $std/array/inputStabArr global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24487,181 +24222,181 @@ i32.const 20 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load offset=4 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=64 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 95 i32.store offset=4 - local.get $1 - i32.const 0 local.get $0 + i32.const 0 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=68 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 125 i32.store offset=4 - local.get $1 - i32.const 1 local.get $0 + i32.const 1 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=72 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 130 i32.store offset=4 - local.get $1 - i32.const 2 local.get $0 + i32.const 2 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=76 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 3 local.get $0 + i32.const 3 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=80 - local.get $0 + local.get $1 i32.const 75 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 4 local.get $0 + i32.const 4 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=84 - local.get $0 + local.get $1 i32.const 80 i32.store - local.get $0 + local.get $1 i32.const 110 i32.store offset=4 - local.get $1 - i32.const 5 local.get $0 + i32.const 5 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=88 - local.get $0 + local.get $1 i32.const 90 i32.store - local.get $0 + local.get $1 i32.const 90 i32.store offset=4 - local.get $1 - i32.const 6 local.get $0 + i32.const 6 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=92 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 80 i32.store offset=4 - local.get $1 - i32.const 7 local.get $0 + i32.const 7 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=96 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 100 i32.store offset=4 - local.get $1 - i32.const 8 local.get $0 + i32.const 8 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=100 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 120 i32.store offset=4 - local.get $1 - i32.const 9 local.get $0 + i32.const 9 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=104 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 135 i32.store offset=4 - local.get $1 - i32.const 10 local.get $0 + i32.const 10 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=108 - local.get $0 + local.get $1 i32.const 110 i32.store - local.get $0 + local.get $1 i32.const 115 i32.store offset=4 - local.get $1 - i32.const 11 local.get $0 - call $~lib/array/Array#__uset + i32.const 11 local.get $1 + call $~lib/array/Array#__uset + local.get $0 global.set $std/array/outputStabArr global.get $~lib/memory/__stack_pointer i32.const 3 @@ -24669,23 +24404,23 @@ i32.const 10 i32.const 7888 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 call $~lib/array/Array#sort@varargs i32.const 3 i32.const 2 i32.const 10 i32.const 7952 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -24702,23 +24437,23 @@ i32.const 10 i32.const 7984 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=12 i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 call $~lib/array/Array#sort@varargs i32.const 8 i32.const 2 i32.const 10 i32.const 8048 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -24735,7 +24470,7 @@ i32.const 11 i32.const 8112 call $~lib/rt/__newArray - local.tee $5 + local.tee $1 i32.store offset=112 i32.const 0 global.set $~argumentsLength @@ -24752,11 +24487,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of18 - block $0of19 - block $outOfRange10 + block $1of148 + block $0of149 + block $outOfRange50 global.get $~argumentsLength - br_table $0of19 $1of18 $outOfRange10 + br_table $0of149 $1of148 $outOfRange50 end unreachable end @@ -24766,9 +24501,9 @@ i32.const 8208 i32.store end - local.get $5 + local.get $1 i32.load offset=4 - local.get $5 + local.get $1 i32.load offset=12 local.get $0 call $~lib/util/sort/SORT @@ -24781,45 +24516,45 @@ i32.const 11 i32.const 8240 call $~lib/rt/__newArray - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.store offset=8 block $__inlined_func$std/array/isArraysEqual (result i32) i32.const 0 local.set $0 i32.const 0 - local.get $5 + local.get $1 i32.load offset=12 - local.tee $1 - local.get $4 + local.tee $7 + local.get $2 i32.load offset=12 i32.ne br_if $__inlined_func$std/array/isArraysEqual drop i32.const 1 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|038 + loop $for-loop|028 local.get $0 - local.get $1 + local.get $7 i32.lt_s if - local.get $5 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.ne if (result i32) - local.get $4 + local.get $2 local.get $0 call $~lib/array/Array#__get - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.ne else i32.const 0 @@ -24827,10 +24562,10 @@ i32.eqz if i32.const 0 - local.get $5 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $4 + local.get $2 local.get $0 call $~lib/array/Array#__get f64.ne @@ -24841,7 +24576,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|038 + br $for-loop|028 end end i32.const 1 @@ -24878,11 +24613,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1151 - block $0of1152 - block $outOfRange153 + block $1of1212 + block $0of1213 + block $outOfRange214 global.get $~argumentsLength - br_table $0of1152 $1of1151 $outOfRange153 + br_table $0of1213 $1of1212 $outOfRange214 end unreachable end @@ -24930,11 +24665,11 @@ i32.const 7 i32.const 8464 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=120 i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#sort@varargs drop @@ -24943,12 +24678,12 @@ i32.const 7 i32.const 8544 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -24965,7 +24700,7 @@ i32.const 3 i32.const 8592 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=124 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -24973,7 +24708,7 @@ i32.const 3 i32.const 8624 call $~lib/rt/__newArray - local.tee $8 + local.tee $7 i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -24981,7 +24716,7 @@ i32.const 3 i32.const 8656 call $~lib/rt/__newArray - local.tee $3 + local.tee $8 i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24989,7 +24724,7 @@ i32.const 3 i32.const 8688 call $~lib/rt/__newArray - local.tee $7 + local.tee $9 i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25002,43 +24737,43 @@ global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $6 + local.tee $11 i32.store offset=144 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $5 + local.tee $12 i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $4 + local.tee $0 i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $2 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray - local.tee $0 + local.tee $13 i32.store offset=160 - local.get $1 + local.get $2 call $std/array/assertSortedDefault - local.get $8 + local.get $7 call $std/array/assertSortedDefault i32.const 1 i32.const 2 i32.const 3 i32.const 8816 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $8 - local.get $1 + local.get $7 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25050,19 +24785,19 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 call $std/array/assertSortedDefault i32.const 2 i32.const 2 i32.const 3 i32.const 8848 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $3 - local.get $1 + local.get $8 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25074,9 +24809,9 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $9 call $std/array/assertSortedDefault - local.get $7 + local.get $9 local.get $10 i32.const 0 call $std/array/isArraysEqual @@ -25089,9 +24824,9 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $11 call $std/array/assertSortedDefault - local.get $6 + local.get $11 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25104,9 +24839,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $12 call $std/array/assertSortedDefault - local.get $5 + local.get $12 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25119,9 +24854,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 call $std/array/assertSortedDefault - local.get $4 + local.get $0 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25134,9 +24869,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 call $std/array/assertSortedDefault - local.get $2 + local.get $1 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25149,361 +24884,44 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $13 call $std/array/assertSortedDefault - i32.const 0 - local.set $8 - i32.const 0 - local.set $7 - 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 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i64.const 0 - i64.store offset=8 - local.get $6 - i64.const 0 - i64.store offset=16 - local.get $6 - global.get $std/array/inputStabArr - local.tee $5 - i32.store offset=8 - local.get $6 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - i32.const 0 - local.get $5 - i32.load offset=12 - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $1 - local.get $0 - local.get $2 - local.get $1 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.tee $0 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.shl - local.set $1 - loop $while-continue|012 - local.get $1 - local.get $8 - i32.gt_u - if - local.get $4 - local.get $8 - i32.add - local.get $2 - local.get $8 - i32.add - i32.load - local.tee $0 - i32.store - local.get $3 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $8 - i32.const 4 - i32.add - local.set $8 - br $while-continue|012 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $3 - i32.store - local.get $0 - i32.const 8880 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $3 - i32.load offset=12 - i32.const 8880 - call $~lib/util/sort/SORT - local.get $6 - local.get $3 - i32.store offset=12 - i32.const 1 - local.set $8 - global.get $~lib/memory/__stack_pointer - global.get $std/array/inputStabArr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $1 - loop $for-loop|013 - local.get $1 - local.get $7 - i32.gt_s - if - block $for-break0 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 - call $~lib/array/Array#__get - local.tee $2 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/outputStabArr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=20 - local.get $2 - i32.load - local.get $0 - i32.load - i32.ne - if (result i32) - i32.const 1 - else - local.get $2 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.ne - end - if - i32.const 0 - local.set $8 - br $for-break0 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|013 - end - end - end - local.get $8 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1042 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer + call $std/array/assertStableSortedForComplexObjects global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createRandomOrderedArray - local.tee $1 + local.tee $0 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray - local.tee $0 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 8912 i32.store offset=8 - local.get $1 + local.get $0 i32.const 8912 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 8944 i32.store offset=8 - local.get $1 + local.get $0 i32.const 8944 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 8976 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8976 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 9008 i32.store offset=8 - local.get $0 + local.get $1 i32.const 9008 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.const 26 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.store - local.get $5 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 0 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 32 - call $~lib/memory/memory.fill - local.get $5 - local.get $0 - i32.store - local.get $5 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $5 - local.get $0 - i32.store offset=4 - local.get $5 - i32.const 32 - i32.store offset=8 - local.get $5 - i32.const 2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.store - loop $for-loop|0154 - local.get $1 - i32.const 2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/array/Array#constructor - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $5 - local.get $1 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0154 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=8 - local.get $5 - i32.const 9040 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25525,66 +24943,184 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 16 - i32.const 29 + i32.const 26 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 0 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 i32.const 0 + call $~lib/rt/itcms/__new + local.tee $7 i32.store offset=4 - local.get $0 + local.get $7 i32.const 0 + i32.const 32 + call $~lib/memory/memory.fill + local.get $2 + local.get $7 + i32.store + local.get $7 + if + local.get $2 + local.get $7 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end + local.get $2 + local.get $7 + i32.store offset=4 + local.get $2 + i32.const 32 i32.store offset=8 - local.get $0 + local.get $2 + i32.const 2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.store + loop $for-loop|0215 + local.get $3 + i32.const 2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/array/Array#constructor + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + local.get $3 + i32.sub + call $~lib/array/Array#__set + local.get $2 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0215 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store offset=8 + local.get $2 + i32.const 9040 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 0 + 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 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 2048 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $7 i32.store offset=4 - local.get $4 + local.get $7 i32.const 0 i32.const 2048 call $~lib/memory/memory.fill - local.get $0 - local.get $4 + local.get $3 + local.get $7 i32.store - local.get $0 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $4 + local.get $7 + if + local.get $3 + local.get $7 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $7 i32.store offset=4 - local.get $0 + local.get $3 i32.const 2048 i32.store offset=8 - local.get $0 + local.get $3 i32.const 512 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 + local.get $2 + local.get $3 i32.store - loop $for-loop|015 - local.get $5 + loop $for-loop|00 + local.get $0 i32.const 512 i32.lt_s if @@ -25597,18 +25133,18 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 4 i32.const 28 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 511 - local.get $5 + local.get $0 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -25616,29 +25152,29 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 + local.get $3 local.get $0 - local.get $5 - local.get $1 + local.get $2 call $~lib/array/Array<~lib/array/Array>#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|015 + local.set $0 + br $for-loop|00 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 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 9072 i32.store offset=8 - local.get $0 + local.get $3 i32.const 9072 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -25647,7 +25183,7 @@ i32.const 31 i32.const 9264 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 7 @@ -25655,12 +25191,12 @@ i32.const 31 i32.const 9312 call $~lib/rt/__newArray - local.tee $6 + local.tee $3 i32.store offset=152 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $5 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25672,18 +25208,18 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of117 - block $0of118 - block $outOfRange19 + block $1of151 + block $0of152 + block $outOfRange53 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of118 $1of117 $outOfRange19 + br_table $0of152 $1of151 $outOfRange53 end unreachable end i32.const 9360 - local.set $5 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 9360 i32.store @@ -25699,18 +25235,18 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load offset=12 - local.get $5 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $2 + local.get $1 i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $1 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -25722,36 +25258,36 @@ i64.const 0 i64.store i32.const 1 - local.set $7 - local.get $0 + local.set $2 + local.get $1 i32.load offset=12 - local.set $1 - loop $for-loop|020 - local.get $1 + local.set $7 + loop $for-loop|054 + local.get $2 local.get $7 - i32.gt_s + i32.lt_s if - local.get $0 - local.get $7 + local.get $1 + local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $4 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $8 i32.store - local.get $0 - local.get $7 + local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $9 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $4 - local.get $2 - local.get $5 + local.get $8 + local.get $9 + local.get $0 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -25764,11 +25300,11 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $7 + local.get $2 i32.const 1 i32.add - local.set $7 - br $for-loop|020 + local.set $2 + br $for-loop|054 end end global.get $~lib/memory/__stack_pointer @@ -25796,7 +25332,7 @@ global.set $~lib/memory/__stack_pointer block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (result i32) i32.const 0 - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25809,47 +25345,47 @@ i64.const 0 i64.store block $folding-inner1 - block $folding-inner021 - local.get $0 + block $folding-inner01 + local.get $1 i32.load offset=12 - local.tee $1 - local.get $6 + local.tee $2 + local.get $3 i32.load offset=12 i32.ne - br_if $folding-inner021 - local.get $0 - local.get $6 + br_if $folding-inner01 + local.get $1 + local.get $3 i32.eq br_if $folding-inner1 - loop $for-loop|049 - local.get $1 - local.get $3 - i32.gt_s + loop $for-loop|042 + local.get $0 + local.get $2 + i32.lt_s if + local.get $1 local.get $0 - local.get $3 call $~lib/array/Array#__get - local.set $4 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.store - local.get $6 local.get $3 + local.get $0 call $~lib/array/Array#__get - local.set $2 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $8 i32.store offset=4 - local.get $4 - local.get $2 + local.get $7 + local.get $8 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner021 - local.get $3 + br_if $folding-inner01 + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|049 + local.set $0 + br $for-loop|042 end end br $folding-inner1 @@ -25879,7 +25415,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 - local.set $3 + local.set $2 local.get $0 i32.const 8 i32.sub @@ -25896,10 +25432,10 @@ i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $2 + local.tee $8 i32.store - loop $for-loop|0155 - local.get $3 + loop $for-loop|044 + local.get $2 i32.const 400 i32.lt_s if @@ -25907,9 +25443,9 @@ f64.const 32 f64.mul i32.trunc_f64_s - local.set $5 + local.set $9 i32.const 0 - local.set $8 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -25930,15 +25466,13 @@ local.get $1 i32.const 9232 i32.store - loop $for-loop|00 - local.get $5 - local.get $8 - i32.gt_s + loop $for-loop|04 + local.get $3 + local.get $9 + i32.lt_s if - local.get $0 - local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $10 i32.const 7696 i32.store offset=4 call $~lib/math/NativeMath.random @@ -25953,7 +25487,7 @@ f64.mul f64.floor i32.trunc_f64_s - local.set $7 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25970,7 +25504,7 @@ i32.load i32.const 1 i32.shr_u - local.get $7 + local.get $11 i32.le_u if global.get $~lib/memory/__stack_pointer @@ -25978,17 +25512,17 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 + local.set $1 br $__inlined_func$~lib/string/String#charAt end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 - local.get $7 + local.get $1 + local.get $11 i32.const 1 i32.shl i32.const 7696 @@ -26001,19 +25535,19 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 local.get $1 + i32.store offset=4 + local.get $10 local.get $0 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|00 + local.set $3 + br $for-loop|04 end end global.get $~lib/memory/__stack_pointer @@ -26023,23 +25557,22 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + local.get $8 local.get $2 - local.get $3 local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|0155 + local.set $2 + br $for-loop|044 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $0 + local.get $8 i32.store offset=156 i32.const 1 global.set $~argumentsLength @@ -26056,13 +25589,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1156 - block $0of1157 - block $outOfRange158 + block $1of146 + block $0of147 + block $outOfRange48 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of1157 $1of1156 $outOfRange158 + br_table $0of147 $1of146 $outOfRange48 end unreachable end @@ -26072,7 +25605,7 @@ i32.const 9392 i32.store end - local.get $0 + local.get $8 local.get $1 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -26086,23 +25619,23 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.store offset=164 - local.get $2 + local.get $1 i32.const 9520 i32.store offset=168 local.get $0 i32.load offset=4 - local.set $7 + local.set $2 local.get $0 i32.load offset=12 - local.set $1 + local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26114,10 +25647,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinBooleanArray - local.get $1 + local.get $7 i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -26129,51 +25662,51 @@ local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray end - block $folding-inner01 - local.get $3 + block $folding-inner06 + local.get $7 i32.eqz if i32.const 9456 i32.const 9488 - local.get $7 + local.get $2 i32.load8_u select local.set $1 - br $folding-inner01 + br $folding-inner06 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $6 + local.tee $8 i32.const 5 i32.add i32.mul i32.const 5 i32.add - local.tee $4 + local.tee $9 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|13 + loop $for-loop|18 local.get $3 - local.get $8 - i32.gt_s + local.get $7 + i32.lt_s if - local.get $7 - local.get $8 + local.get $2 + local.get $3 i32.add i32.load8_u - local.tee $2 + local.tee $10 i32.eqz i32.const 4 i32.add - local.set $5 + local.set $11 local.get $0 i32.const 1 i32.shl @@ -26181,17 +25714,17 @@ i32.add i32.const 9456 i32.const 9488 - local.get $2 + local.get $10 select - local.get $5 + local.get $11 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $11 i32.add local.set $0 - local.get $6 + local.get $8 if local.get $0 i32.const 1 @@ -26199,23 +25732,23 @@ local.get $1 i32.add i32.const 9520 - local.get $6 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $6 + local.get $8 i32.add local.set $0 end - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|13 + local.set $3 + br $for-loop|18 end end - local.get $3 + local.get $2 local.get $7 i32.add i32.load8_u @@ -26223,7 +25756,7 @@ i32.eqz i32.const 4 i32.add - local.set $5 + local.set $3 local.get $0 i32.const 1 i32.shl @@ -26233,13 +25766,13 @@ i32.const 9488 local.get $2 select - local.get $5 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $9 local.get $0 - local.get $5 + local.get $3 i32.add local.tee $0 i32.gt_s @@ -26248,7 +25781,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner01 + br $folding-inner06 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26285,15 +25818,15 @@ i32.const 3 i32.const 9600 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 9232 i32.store offset=168 - local.get $1 + local.get $0 i32.const 9232 call $~lib/array/Array#join local.set $0 @@ -26320,15 +25853,15 @@ i32.const 7 i32.const 11440 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 11472 i32.store offset=168 - local.get $1 + local.get $0 i32.const 11472 call $~lib/array/Array#join local.set $0 @@ -26355,15 +25888,15 @@ i32.const 3 i32.const 11504 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 11536 i32.store offset=168 - local.get $1 + local.get $0 i32.const 11536 call $~lib/array/Array#join local.set $0 @@ -26390,15 +25923,15 @@ i32.const 11 i32.const 11648 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 11728 i32.store offset=168 - local.get $1 + local.get $0 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -26424,15 +25957,15 @@ i32.const 31 i32.const 13040 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 9232 i32.store offset=168 - local.get $1 + local.get $0 i32.const 9232 call $~lib/array/Array<~lib/string/String|null>#join local.set $0 @@ -26564,7 +26097,7 @@ i32.const 3 i32.const 13328 call $~lib/rt/__newArray - local.tee $4 + local.tee $0 i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -26572,7 +26105,7 @@ i32.const 3 i32.const 13360 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -26588,18 +26121,18 @@ i32.const 3 i32.const 13424 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=144 - local.get $4 + local.get $0 call $~lib/array/Array#toString - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 9232 i32.store offset=8 - local.get $4 + local.get $0 i32.const 9232 call $~lib/string/String.__eq i32.eqz @@ -26611,17 +26144,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/array/Array#toString - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $4 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 13008 i32.store offset=8 - local.get $4 + local.get $0 i32.const 13008 call $~lib/string/String.__eq i32.eqz @@ -26635,15 +26168,15 @@ end local.get $2 call $~lib/array/Array#toString - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 13472 i32.store offset=8 - local.get $2 + local.get $0 i32.const 13472 call $~lib/string/String.__eq i32.eqz @@ -26655,17 +26188,17 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 call $~lib/array/Array#toString - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 13504 i32.store offset=8 - local.get $1 + local.get $0 i32.const 13504 call $~lib/string/String.__eq i32.eqz @@ -26682,12 +26215,12 @@ i32.const 36 i32.const 13552 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26696,23 +26229,23 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 9520 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.load offset=12 - local.set $1 + local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26724,10 +26257,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.const 0 i32.lt_s if @@ -26739,54 +26272,54 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner04 - local.get $6 + block $folding-inner010 + local.get $7 i32.eqz if - local.get $5 + local.get $2 i32.load8_s call $~lib/util/number/itoa32 local.set $1 - br $folding-inner04 + br $folding-inner010 end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $8 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $2 + local.tee $9 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|06 - local.get $6 - local.get $8 - i32.gt_s + loop $for-loop|012 + local.get $3 + local.get $7 + i32.lt_s if local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $5 - local.get $8 + local.get $2 + local.get $3 i32.add i32.load8_s call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $8 if local.get $0 i32.const 1 @@ -26794,30 +26327,30 @@ local.get $1 i32.add i32.const 9520 - local.get $4 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $8 i32.add local.set $0 end - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|06 + local.set $3 + br $for-loop|012 end end - local.get $2 + local.get $9 local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $5 - local.get $6 + local.get $2 + local.get $7 i32.add i32.load8_s call $~lib/util/number/itoa_buffered @@ -26830,7 +26363,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner04 + br $folding-inner010 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26871,12 +26404,12 @@ i32.const 9 i32.const 13616 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26885,23 +26418,23 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 9520 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.load offset=12 - local.set $1 + local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26913,10 +26446,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.const 0 i32.lt_s if @@ -26928,56 +26461,56 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner07 - local.get $6 + block $folding-inner015 + local.get $7 i32.eqz if - local.get $5 + local.get $2 i32.load16_u call $~lib/util/number/utoa32 local.set $1 - br $folding-inner07 + br $folding-inner015 end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $8 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $2 + local.tee $9 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|09124 - local.get $6 - local.get $8 - i32.gt_s + loop $for-loop|017 + local.get $3 + local.get $7 + i32.lt_s if local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $8 + local.get $3 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $8 if local.get $0 i32.const 1 @@ -26985,32 +26518,32 @@ local.get $1 i32.add i32.const 9520 - local.get $4 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $8 i32.add local.set $0 end - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|09124 + local.set $3 + br $for-loop|017 end end - local.get $2 + local.get $9 local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $6 + local.get $7 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u call $~lib/util/number/itoa_buffered @@ -27023,7 +26556,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner07 + br $folding-inner015 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -27064,12 +26597,12 @@ i32.const 37 i32.const 13696 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -27078,13 +26611,13 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 9520 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -27092,9 +26625,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13744 i32.store offset=8 local.get $0 @@ -27114,12 +26648,12 @@ i32.const 38 i32.const 13824 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -27128,26 +26662,346 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 9520 i32.store - local.get $1 - call $~lib/array/Array#join + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $7 + i32.const 0 local.set $0 + i32.const 0 + local.set $3 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $7 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner019 + local.get $7 + i32.eqz + if + local.get $2 + i64.load + i64.extend32_s + 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 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa64 + local.get $4 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9824 + local.set $1 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $4 + i64.sub + local.get $4 + local.get $4 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $0 + select + local.tee $4 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.wrap_i64 + local.tee $2 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $0 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $4 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $4 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $4 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $4 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $4 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $4 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $4 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $4 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $4 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $4 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.get $0 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $4 + local.get $2 + 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 + end + br $folding-inner019 + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $for-loop|021 + local.get $3 + local.get $7 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $3 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $8 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9520 + local.get $8 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|021 + end + end + local.get $9 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $7 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner019 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $0 + local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13888 i32.store offset=8 - local.get $0 + local.get $1 i32.const 13888 call $~lib/string/String.__eq i32.eqz @@ -27267,12 +27121,12 @@ i32.store local.get $1 i32.load offset=4 - local.set $7 + local.set $2 local.get $1 i32.load offset=12 - local.set $2 - i32.const 0 local.set $1 + i32.const 0 + local.set $3 local.get $0 i32.const 12 i32.sub @@ -27289,10 +27143,10 @@ i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -27304,11 +27158,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $6 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load local.tee $0 i32.store @@ -27335,37 +27189,37 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|011 + local.set $7 + loop $for-loop|024 local.get $1 - local.get $6 - i32.lt_s + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $5 + local.tee $8 i32.store - local.get $5 + local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 call $~lib/array/Array#toString - local.set $5 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.store offset=8 local.get $0 - local.get $5 + local.get $8 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -27374,33 +27228,33 @@ local.tee $0 i32.store offset=4 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|011 + local.set $3 + br $for-loop|024 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array#toString - 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 $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -27482,12 +27336,12 @@ i32.store local.get $1 i32.load offset=4 - local.set $7 + local.set $2 local.get $1 i32.load offset=12 - local.set $2 - i32.const 0 local.set $1 + i32.const 0 + local.set $3 local.get $0 i32.const 12 i32.sub @@ -27504,10 +27358,10 @@ i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -27519,11 +27373,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $6 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load local.tee $0 i32.store @@ -27550,37 +27404,37 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|01322 + local.set $7 + loop $for-loop|027 local.get $1 - local.get $6 - i32.lt_s + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $5 + local.tee $8 i32.store - local.get $5 + local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 call $~lib/array/Array#toString - local.set $5 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.store offset=8 local.get $0 - local.get $5 + local.get $8 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -27589,33 +27443,33 @@ local.tee $0 i32.store offset=4 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|01322 + local.set $3 + br $for-loop|027 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array#toString - 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 $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -27655,10 +27509,10 @@ i32.const 41 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=136 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=4 i32.store offset=128 global.get $~lib/memory/__stack_pointer @@ -27667,13 +27521,13 @@ i32.const 40 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=124 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.load offset=4 i32.store offset=120 - local.get $1 + local.get $2 i32.const 0 i32.const 1 i32.const 2 @@ -27681,12 +27535,12 @@ i32.const 14416 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 - i32.const 0 local.get $1 + i32.const 0 + local.get $2 call $~lib/array/Array#__uset local.get $0 - local.get $2 + local.get $1 i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -27703,14 +27557,14 @@ local.get $0 i32.const 9520 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=12 local.set $2 - i32.const 0 + local.get $1 + i32.load offset=12 local.set $1 + i32.const 0 + local.set $3 local.get $0 i32.const 12 i32.sub @@ -27727,10 +27581,10 @@ i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -27742,11 +27596,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end - local.get $6 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load local.tee $0 i32.store @@ -27773,37 +27627,37 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|01523 + local.set $7 + loop $for-loop|030 local.get $1 - local.get $6 - i32.lt_s + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $5 + local.tee $8 i32.store - local.get $5 + local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 call $~lib/array/Array<~lib/array/Array>#toString - local.set $5 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.store offset=8 local.get $0 - local.get $5 + local.get $8 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -27812,33 +27666,33 @@ local.tee $0 i32.store offset=4 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|01523 + local.set $3 + br $for-loop|030 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array<~lib/array/Array>#toString - 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 $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -27970,13 +27824,13 @@ i32.const 42 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=160 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=4 i32.store offset=140 - local.get $2 + local.get $1 i32.const 0 i32.const 1 i32.const 2 @@ -27984,7 +27838,7 @@ i32.const 14608 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 + local.get $1 i32.const 1 i32.const 3 i32.const 2 @@ -27992,7 +27846,7 @@ i32.const 14704 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 + local.get $1 i32.const 2 i32.const 3 i32.const 2 @@ -28000,7 +27854,7 @@ i32.const 14832 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 + local.get $1 i32.const 3 i32.const 1 i32.const 2 @@ -28009,15 +27863,15 @@ call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 - local.get $2 + local.get $1 i32.store offset=140 global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $3 i32.const 0 - local.set $8 + local.set $0 i32.const 0 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -28029,138 +27883,144 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $6 - local.get $2 + local.set $8 + local.get $1 i32.load offset=12 - local.set $5 - loop $for-loop|0133 + local.set $1 + loop $for-loop|0217 local.get $1 - local.get $5 - i32.lt_s + local.get $3 + i32.gt_s if - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $6 + local.get $8 i32.add i32.load - local.tee $0 + local.tee $9 if (result i32) - local.get $0 + local.get $9 i32.load offset=12 else i32.const 0 end - local.get $8 + local.get $0 i32.add - local.set $8 - local.get $1 + local.set $0 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|0133 + local.set $3 + br $for-loop|0217 end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.const 2 i32.shl - local.tee $1 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 31 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $10 i32.store offset=4 + local.get $10 local.get $0 - local.get $8 i32.store offset=12 - local.get $0 - local.get $1 + local.get $10 + local.get $3 i32.store offset=8 - local.get $0 - local.get $7 + local.get $10 + local.get $9 i32.store offset=4 - local.get $0 - local.get $7 + local.get $10 + local.get $9 i32.store - local.get $0 - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $9 + if + local.get $10 + local.get $9 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end i32.const 0 - local.set $1 - loop $for-loop|1134 + local.set $3 + loop $for-loop|1218 local.get $1 - local.get $5 - i32.lt_s + local.get $3 + i32.gt_s if - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $6 + local.get $8 i32.add i32.load - local.tee $2 + local.tee $11 if - local.get $3 - local.get $7 - i32.add local.get $2 + local.get $9 + i32.add + local.get $11 i32.load offset=4 - local.get $2 + local.get $11 i32.load offset=12 i32.const 2 i32.shl - local.tee $2 + local.tee $11 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $11 i32.add - local.set $3 + local.set $2 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|1134 + local.set $3 + br $for-loop|1218 end end i32.const 0 - local.set $1 - loop $for-loop|2135 - local.get $1 - local.get $8 - i32.lt_s + local.set $3 + loop $for-loop|2219 + local.get $0 + local.get $3 + i32.gt_s if - local.get $7 - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add i32.load - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 + local.tee $1 + if + local.get $9 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|2135 + local.set $3 + br $for-loop|2219 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.tee $1 + local.get $10 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28168,9 +28028,9 @@ i32.const 31 i32.const 14928 call $~lib/rt/__newArray - local.tee $5 + local.tee $1 i32.store offset=148 - local.get $0 + local.get $10 i32.load offset=12 i32.const 8 i32.ne @@ -28185,27 +28045,27 @@ i32.const 0 local.set $0 loop $for-loop|8 - local.get $5 + local.get $1 i32.load offset=12 local.get $0 i32.gt_s if - local.get $1 + local.get $10 local.get $0 call $~lib/array/Array#__get - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.store - local.get $5 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 - local.get $4 local.get $2 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -28278,13 +28138,13 @@ i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $1 i32.store offset=144 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $1 i32.load offset=4 i32.store offset=152 - local.get $8 + local.get $1 i32.const 0 i32.const 1 i32.const 2 @@ -28292,7 +28152,7 @@ i32.const 15056 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $8 + local.get $1 i32.const 1 i32.const 1 i32.const 2 @@ -28301,14 +28161,14 @@ call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 - local.get $8 + local.get $1 i32.store offset=152 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15120 i32.store offset=164 i32.const 0 - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -28318,74 +28178,77 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 + local.get $2 local.get $1 - local.get $8 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 2 i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $7 i32.store - local.get $3 + local.get $7 i32.load offset=4 - local.set $5 - loop $for-loop|0163 - local.get $7 - local.get $8 - i32.load offset=12 - local.tee $1 + local.set $8 + loop $for-loop|033 + local.get $2 local.get $1 - local.get $7 - i32.gt_s + i32.load offset=12 + local.tee $9 + local.get $2 + local.get $9 + i32.lt_s select - local.get $0 + local.get $3 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $0 + local.tee $9 + local.get $3 i32.const 2 i32.shl - local.tee $2 - local.get $8 + local.tee $10 + local.get $1 i32.load offset=4 i32.add i32.load - local.tee $1 + local.tee $11 i32.store offset=4 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $9 + local.get $11 + local.get $3 local.get $1 - local.get $0 - local.get $8 i32.const 15120 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - local.tee $1 + local.tee $9 i32.store offset=8 - local.get $2 - local.get $5 + local.get $8 + local.get $10 i32.add - local.get $1 + local.get $9 i32.store + local.get $9 + if + local.get $7 + local.get $9 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 i32.const 1 i32.add - local.set $0 - br $for-loop|0163 + local.set $3 + br $for-loop|033 end end global.get $~lib/memory/__stack_pointer @@ -28393,9 +28256,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.store - local.get $3 + local.get $7 call $~lib/array/Array<~lib/array/Array>#flat local.tee $0 i32.store offset=144 @@ -28475,12 +28338,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0165 + loop $while-continue|0224 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0165 + br $while-continue|0224 end end end @@ -28571,7 +28434,7 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $4 loop $while-continue|0 local.get $2 local.get $3 @@ -28581,12 +28444,12 @@ local.get $2 i32.const 2 i32.shl - local.get $0 + local.get $4 i32.add i32.load - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $1 call $~lib/string/String.__eq if @@ -28644,10 +28507,6 @@ i32.store local.get $1 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 i32.const 0 @@ -28675,27 +28534,30 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - i32.const 0 local.get $3 + i32.const 0 + local.get $2 call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 local.get $0 @@ -28745,7 +28607,6 @@ (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28762,52 +28623,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store + local.get $4 local.get $0 local.get $1 i32.shl local.tee $4 - local.set $6 + local.set $1 local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.set $1 + local.set $5 local.get $3 if - local.get $1 + local.get $5 local.get $3 - local.get $6 + local.get $1 call $~lib/memory/memory.copy end local.get $5 - local.get $1 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 + local.tee $1 + local.get $5 i32.store - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $5 + if + local.get $1 + local.get $5 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 + local.get $5 i32.store offset=4 - local.get $2 + local.get $1 local.get $4 i32.store offset=8 - local.get $2 + 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 $2 + local.get $1 ) (func $std/array/internalCapacity (param $0 i32) (result i32) (local $1 i32) @@ -28869,17 +28733,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + i32.load offset=12 + local.tee $3 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $3 - local.get $0 - i32.load offset=12 - local.tee $4 - i32.add local.tee $2 + i32.add + local.tee $4 i32.const 268435455 i32.gt_u if @@ -28891,19 +28755,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.load offset=4 local.tee $5 local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.const 2 i32.shl local.tee $0 @@ -28913,7 +28777,7 @@ i32.add local.get $1 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -28921,7 +28785,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -28998,14 +28862,14 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.load offset=4 @@ -29013,7 +28877,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -29021,7 +28885,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -29051,13 +28915,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -29067,76 +28931,76 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $5 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $2 + local.get $4 i32.const 2 i32.shl i32.add local.tee $6 - local.get $2 + local.get $5 i32.const 2 i32.shl call $~lib/memory/memory.copy + local.get $3 local.get $4 - local.get $1 - local.get $2 + local.get $5 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $5 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 ) (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -29167,13 +29031,13 @@ i32.const 2 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -29183,76 +29047,76 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end - local.tee $1 + local.tee $5 i32.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 2 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $3 i32.const 2 i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $1 + local.get $5 i32.const 2 i32.shl i32.add - local.tee $6 - local.get $2 + local.tee $2 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy + local.get $4 local.get $3 - local.get $1 - local.get $2 + local.get $5 i32.add - local.tee $1 + local.tee $5 i32.ne if - local.get $6 - local.get $1 + local.get $2 + local.get $5 i32.const 2 i32.shl - local.get $5 - i32.add - local.get $3 local.get $1 + i32.add + local.get $4 + local.get $5 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 + local.get $4 local.get $3 - local.get $2 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -29382,38 +29246,38 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $5 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.load offset=4 - local.set $4 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $5 local.get $0 i32.load offset=12 - local.tee $5 - local.get $2 + local.tee $4 + local.get $4 local.get $5 - i32.lt_s + i32.gt_s select - local.get $3 + local.get $2 i32.gt_s if - local.get $3 + local.get $2 i32.const 2 i32.shl - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.add @@ -29421,20 +29285,20 @@ local.set $6 i32.const 3 global.set $~argumentsLength + local.get $3 local.get $4 - local.get $5 i32.add local.get $6 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -29464,58 +29328,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -29523,7 +29387,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $std/array/Dim#constructor (result i32) (local $0 i32) @@ -29673,31 +29537,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 local.get $0 call $~lib/array/Array#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|0 local.get $0 - local.get $2 + local.get $1 i32.gt_s if - local.get $1 local.get $2 + local.get $1 local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $1 i32.sub call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -29705,7 +29569,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) (local $1 i32) @@ -29726,31 +29590,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 local.get $0 call $~lib/array/Array#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|0 local.get $0 - local.get $2 + local.get $1 i32.gt_s if - local.get $1 local.get $2 + local.get $1 call $~lib/math/NativeMath.random local.get $0 f64.convert_i32_s f64.mul i32.trunc_f64_s call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -29758,7 +29622,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -29796,10 +29660,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -29839,10 +29699,13 @@ local.get $0 local.get $2 i32.store - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $2 i32.store offset=4 @@ -29889,6 +29752,8 @@ i32.shr_u local.tee $2 local.get $2 + i32.const 0 + i32.gt_u select local.tee $3 local.get $1 @@ -29919,10 +29784,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $1 local.get $4 i32.sub - local.tee $1 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -29936,7 +29801,7 @@ local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.eq local.get $4 select @@ -29949,22 +29814,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 local.get $0 local.get $4 i32.add - local.get $1 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -30006,71 +29871,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -30078,7 +29943,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) @@ -30113,68 +29978,67 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 local.get $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 $2 + local.get $1 ) (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) (local $1 i32) @@ -30203,19 +30067,19 @@ i64.store local.get $0 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=12 - local.set $6 + local.set $5 loop $for-loop|0 local.get $2 - local.get $6 + local.get $5 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add i32.load local.tee $0 @@ -30242,7 +30106,7 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 @@ -30257,32 +30121,35 @@ local.get $2 i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=4 local.get $0 - local.get $4 + local.get $6 i32.store - local.get $0 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $6 + if + local.get $0 + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end i32.const 0 local.set $2 loop $for-loop|1 local.get $2 - local.get $6 + local.get $5 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add i32.load local.tee $3 if local.get $1 - local.get $4 + local.get $6 i32.add local.get $3 i32.load offset=4 @@ -30346,11 +30213,11 @@ 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 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -30372,7 +30239,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -30387,15 +30254,15 @@ i32.store end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -30414,10 +30281,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -30445,27 +30308,29 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - i32.const 0 local.get $3 + i32.const 0 + local.get $4 call $~lib/memory/memory.fill local.get $0 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -30588,27 +30453,27 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load @@ -30616,10 +30481,10 @@ i32.eqz br_if $__inlined_func$~lib/array/Array#every drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -30656,18 +30521,18 @@ local.get $3 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - local.set $4 - block $__inlined_func$~lib/array/Array#findIndex + block $__inlined_func$~lib/array/Array#findIndex (result i32) + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 - local.get $4 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $4 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select local.get $2 i32.gt_s @@ -30679,14 +30544,18 @@ i32.shl i32.add i32.load + local.set $4 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex + drop local.get $2 i32.const 1 i32.add @@ -30695,13 +30564,11 @@ end end 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 ) (func $export:~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30728,12 +30595,12 @@ local.get $2 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - block $__inlined_func$~lib/array/Array#findLastIndex + block $__inlined_func$~lib/array/Array#findLastIndex (result i32) + 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 @@ -30746,14 +30613,18 @@ i32.shl i32.add i32.load + local.set $3 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findLastIndex + drop local.get $2 i32.const 1 i32.sub @@ -30762,13 +30633,11 @@ end end 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 ) (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30800,7 +30669,8 @@ select local.get $1 i32.add - local.tee $1 + local.set $1 + local.get $1 local.get $2 i32.ge_u if @@ -30862,21 +30732,19 @@ i32.const 2147483647 local.set $3 end - local.get $1 - local.set $4 local.get $0 - local.tee $5 + local.tee $4 i32.load offset=4 - local.set $6 + local.set $5 local.get $0 i32.load offset=12 - local.set $1 + local.set $6 local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $1 local.get $2 + local.get $6 i32.add local.tee $0 i32.const 0 @@ -30886,10 +30754,10 @@ select else local.get $2 - local.get $1 - local.get $1 + local.get $6 local.get $2 - i32.gt_s + local.get $6 + i32.lt_s select end local.set $0 @@ -30897,35 +30765,35 @@ i32.const 0 i32.lt_s if (result i32) - local.get $1 local.get $3 + local.get $6 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select else local.get $3 - local.get $1 - local.get $1 + local.get $6 local.get $3 - i32.gt_s + local.get $6 + i32.lt_s select end - local.set $1 + local.set $2 loop $for-loop|0 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add - local.get $4 + local.get $1 i32.store local.get $0 i32.const 1 @@ -30938,7 +30806,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 ) (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -30973,7 +30841,8 @@ i32.const 0 local.set $2 end - block $__inlined_func$~lib/array/Array#indexOf + block $__inlined_func$~lib/array/Array#indexOf (result i32) + i32.const -1 local.get $2 local.get $0 i32.load offset=12 @@ -30982,11 +30851,8 @@ i32.const 1 local.get $3 select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end + br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 0 i32.lt_s @@ -31010,6 +30876,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $1 local.get $2 i32.const 2 @@ -31019,6 +30886,7 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -31027,15 +30895,13 @@ end end i32.const -1 - local.set $2 end + i32.const 0 + i32.ge_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.ge_s ) (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -31070,7 +30936,8 @@ i32.const 0 local.set $2 end - block $__inlined_func$~lib/array/Array#indexOf + block $__inlined_func$~lib/array/Array#indexOf (result i32) + i32.const -1 local.get $2 local.get $0 i32.load offset=12 @@ -31079,11 +30946,8 @@ i32.const 1 local.get $3 select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end + br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 0 i32.lt_s @@ -31107,6 +30971,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $1 local.get $2 i32.const 2 @@ -31116,6 +30981,7 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -31124,17 +30990,14 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -31167,23 +31030,23 @@ i32.load offset=12 local.set $2 end - i32.const -1 - local.set $3 - block $__inlined_func$~lib/array/Array#lastIndexOf + block $__inlined_func$~lib/array/Array#lastIndexOf (result i32) + i32.const -1 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf + drop local.get $2 - local.get $4 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.get $2 local.get $2 - local.get $4 + local.get $3 i32.ge_s select local.get $2 @@ -31199,9 +31062,9 @@ i32.const 0 i32.ge_s if + local.get $2 local.get $1 local.get $2 - local.tee $3 i32.const 2 i32.shl local.get $0 @@ -31209,7 +31072,8 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $3 + drop + local.get $2 i32.const 1 i32.sub local.set $2 @@ -31217,13 +31081,11 @@ end end i32.const -1 - local.set $3 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -31257,11 +31119,11 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -31284,17 +31146,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + i32.load offset=12 + local.tee $4 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $3 - local.get $0 - i32.load offset=12 - local.tee $4 - i32.add local.tee $2 + i32.add + local.tee $3 i32.const 268435455 i32.gt_u if @@ -31306,16 +31168,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $5 i32.store - local.get $2 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $3 local.get $0 i32.load offset=4 local.get $4 @@ -31324,11 +31186,11 @@ local.tee $0 call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $3 i32.add local.get $1 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -31340,7 +31202,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $5 return end i32.const 32064 @@ -31416,8 +31278,8 @@ local.get $0 i32.load offset=12 local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -31464,45 +31326,45 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -31516,23 +31378,23 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -31541,58 +31403,58 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -31604,7 +31466,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -31639,9 +31501,9 @@ i32.store local.get $0 i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s + local.tee $3 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -31658,10 +31520,10 @@ local.get $2 i32.const 4 i32.add - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $3 i32.const 2 i32.shl local.tee $4 @@ -31672,7 +31534,7 @@ i32.const 0 i32.store local.get $0 - local.get $1 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31713,37 +31575,37 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -31783,11 +31645,11 @@ ) (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -31876,14 +31738,14 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.load offset=4 @@ -31891,7 +31753,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -31903,7 +31765,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -31918,11 +31780,11 @@ (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -31959,13 +31821,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -31975,69 +31837,69 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $2 + local.get $4 i32.const 2 i32.shl i32.add local.tee $6 - local.get $2 + local.get $1 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $1 - local.get $2 + local.get $4 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -32048,7 +31910,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -32085,52 +31947,52 @@ i32.store local.get $0 i32.load offset=4 - local.set $4 + local.set $2 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $4 i32.const 1 i32.gt_u if - local.get $1 + local.get $4 i32.const 1 i32.shr_u - local.set $5 - local.get $1 + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $1 + local.set $5 loop $while-continue|0 - local.get $2 - local.get $5 + local.get $1 + local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add - local.tee $3 + local.tee $6 i32.load - local.set $6 - local.get $3 + local.set $4 + local.get $6 + local.get $5 local.get $1 - local.get $2 i32.sub i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add - local.tee $3 + local.tee $6 i32.load i32.store - local.get $3 local.get $6 + local.get $4 i32.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end @@ -32175,11 +32037,11 @@ ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -32296,11 +32158,11 @@ 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 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -32322,7 +32184,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -32337,15 +32199,15 @@ i32.store end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -32364,10 +32226,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -32393,27 +32251,29 @@ i32.const 8 i32.gt_u select - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - i32.const 0 local.get $3 + i32.const 0 + local.get $4 call $~lib/memory/memory.fill local.get $0 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -32508,25 +32368,25 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if - local.get $4 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load @@ -32534,10 +32394,10 @@ i32.eqz br_if $__inlined_func$~lib/array/Array#every drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -32574,18 +32434,18 @@ local.get $3 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - local.set $4 - block $__inlined_func$~lib/array/Array#findIndex + block $__inlined_func$~lib/array/Array#findIndex (result i32) + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 - local.get $4 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $4 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select local.get $2 i32.gt_s @@ -32595,14 +32455,18 @@ i32.load offset=4 i32.add i32.load8_u + local.set $4 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex + drop local.get $2 i32.const 1 i32.add @@ -32611,13 +32475,11 @@ end end 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 ) (func $export:~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -32644,12 +32506,12 @@ local.get $2 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - block $__inlined_func$~lib/array/Array#findLastIndex + block $__inlined_func$~lib/array/Array#findLastIndex (result i32) + 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 @@ -32660,14 +32522,18 @@ i32.load offset=4 i32.add i32.load8_u + local.set $3 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findLastIndex + drop local.get $2 i32.const 1 i32.sub @@ -32676,13 +32542,11 @@ end end 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 ) (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -32714,7 +32578,8 @@ select local.get $1 i32.add - local.tee $1 + local.set $1 + local.get $1 local.get $2 i32.ge_u if @@ -32814,104 +32679,8 @@ i32.const 0 local.set $2 end - block $__inlined_func$~lib/array/Array#indexOf - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end + block $__inlined_func$~lib/array/Array#indexOf (result i32) i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.ge_s - ) - (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - block $__inlined_func$~lib/array/Array#indexOf local.get $2 local.get $0 i32.load offset=12 @@ -32920,11 +32689,8 @@ i32.const 1 local.get $3 select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end + br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 0 i32.lt_s @@ -32948,6 +32714,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $0 local.get $2 i32.add @@ -32957,6 +32724,7 @@ i32.and i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -32965,17 +32733,109 @@ end end i32.const -1 + end + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 local.set $2 end + block $__inlined_func$~lib/array/Array#indexOf (result i32) + i32.const -1 + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + br_if $__inlined_func$~lib/array/Array#indexOf + 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 + 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 $__inlined_func$~lib/array/Array#indexOf + 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 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -33008,23 +32868,23 @@ i32.load offset=12 local.set $2 end - i32.const -1 - local.set $3 - block $__inlined_func$~lib/array/Array#lastIndexOf + block $__inlined_func$~lib/array/Array#lastIndexOf (result i32) + i32.const -1 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf + drop local.get $2 - local.get $4 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.get $2 local.get $2 - local.get $4 + local.get $3 i32.ge_s select local.get $2 @@ -33041,8 +32901,8 @@ i32.ge_s if local.get $2 - local.tee $3 local.get $0 + local.get $2 i32.add i32.load8_u local.get $1 @@ -33050,7 +32910,8 @@ i32.and i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $3 + drop + local.get $2 i32.const 1 i32.sub local.set $2 @@ -33058,13 +32919,11 @@ end end i32.const -1 - local.set $3 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -33098,11 +32957,11 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -33133,9 +32992,9 @@ i32.const 0 local.get $1 select - local.tee $4 - i32.add local.tee $3 + i32.add + local.tee $4 i32.const 1073741820 i32.gt_u if @@ -33147,26 +33006,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $5 + local.get $4 i32.add local.get $1 i32.load offset=4 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33176,7 +33035,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -33189,7 +33048,6 @@ (func $export:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -33223,14 +33081,13 @@ end local.get $3 local.get $0 - local.tee $4 i32.load offset=12 - local.tee $5 + local.tee $4 local.get $3 - local.get $5 + local.get $4 i32.lt_s select - local.set $6 + local.set $5 local.get $0 i32.load offset=4 local.tee $3 @@ -33239,19 +33096,19 @@ i32.lt_s if (result i32) local.get $1 - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select else local.get $1 - local.get $5 + local.get $4 local.get $1 - local.get $5 + local.get $4 i32.lt_s select end @@ -33262,63 +33119,63 @@ i32.lt_s if (result i32) local.get $2 - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select else local.get $2 - local.get $5 + local.get $4 local.get $2 - local.get $5 + local.get $4 i32.lt_s select end - local.tee $0 + local.tee $2 local.get $3 i32.add - local.get $6 + local.get $5 i32.const 0 i32.lt_s if (result i32) + local.get $4 local.get $5 - local.get $6 i32.add - local.tee $2 + local.tee $3 i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select else - local.get $6 local.get $5 + local.get $4 + local.get $4 local.get $5 - local.get $6 i32.gt_s select end - local.get $0 + local.get $2 i32.sub - local.tee $0 - local.get $5 + local.tee $2 + local.get $4 local.get $1 i32.sub local.tee $1 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 ) (func $export:~lib/array/Array#pop (param $0 i32) (result i32) (local $1 i32) @@ -33344,8 +33201,8 @@ local.get $0 i32.load offset=12 local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -33390,43 +33247,43 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if - local.get $3 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -33440,23 +33297,23 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -33465,56 +33322,56 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if - local.get $4 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u - local.set $3 + local.set $5 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -33526,7 +33383,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -33560,9 +33417,9 @@ i32.store local.get $0 i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s + local.tee $3 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -33579,18 +33436,18 @@ local.get $2 i32.const 1 i32.add - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $3 call $~lib/memory/memory.copy - local.get $1 local.get $2 + local.get $3 i32.add i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33631,35 +33488,35 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if - local.get $4 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -33724,11 +33581,11 @@ ) (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -33817,20 +33674,20 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $1 local.get $0 i32.load offset=4 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33840,7 +33697,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -33855,11 +33712,11 @@ (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -33896,13 +33753,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -33912,61 +33769,61 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 - local.get $1 + local.get $4 local.get $0 i32.load offset=4 - local.tee $5 + local.tee $2 i32.add local.tee $6 - local.get $2 + local.get $1 call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $1 - local.get $2 + local.get $4 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 - local.get $5 + local.get $2 + local.get $4 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -33977,7 +33834,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -34007,19 +33864,23 @@ local.get $0 i32.store local.get $0 - call $~lib/array/Array#reverse + i32.load offset=4 + local.get $0 + i32.load offset=12 + call $~lib/util/bytes/REVERSE global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34082,11 +33943,11 @@ ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34170,11 +34031,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:std/array/ArrayStr#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34242,24 +34103,24 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array<~lib/string/String>#every (result i32) - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -34272,23 +34133,23 @@ i32.store local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add @@ -34298,7 +34159,7 @@ i32.const 3 global.set $~argumentsLength local.get $4 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load @@ -34312,10 +34173,10 @@ i32.const 0 br $__inlined_func$~lib/array/Array<~lib/string/String>#every end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -34342,11 +34203,11 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34358,21 +34219,21 @@ local.get $3 local.get $1 i32.store offset=4 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex + block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex (result i32) + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 local.get $3 local.get $0 @@ -34408,6 +34269,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex end local.get $2 @@ -34422,13 +34284,11 @@ 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 return end i32.const 32064 @@ -34441,11 +34301,11 @@ (func $export:~lib/array/Array<~lib/string/String>#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 block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34457,23 +34317,23 @@ local.get $2 local.get $1 i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - block $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex + block $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex (result i32) + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 loop $for-loop|0 local.get $2 i32.const 0 @@ -34502,6 +34362,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex end local.get $2 @@ -34516,13 +34377,11 @@ 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 return end i32.const 32064 @@ -34534,11 +34393,11 @@ ) (func $export:~lib/array/Array<~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 block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34721,10 +34580,13 @@ i32.add local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 i32.const 1 i32.add @@ -34834,11 +34696,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34864,18 +34726,18 @@ i32.load offset=12 local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf (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 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.load offset=12 local.tee $3 @@ -34886,7 +34748,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf end local.get $2 @@ -34930,6 +34791,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf end local.get $2 @@ -34944,13 +34806,11 @@ 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 return end i32.const 32064 @@ -34999,26 +34859,24 @@ (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 + (local $8 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.tee $2 + local.tee $4 local.get $0 i32.store - local.get $2 + local.get $4 local.get $1 i32.store offset=4 - i32.const 0 - local.set $2 - local.get $3 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -35031,7 +34889,7 @@ i32.store local.get $0 i32.load offset=12 - local.tee $4 + local.tee $5 local.get $1 i32.load offset=12 i32.const 0 @@ -35039,7 +34897,7 @@ select local.tee $6 i32.add - local.tee $3 + local.tee $4 i32.const 268435455 i32.gt_u if @@ -35051,83 +34909,87 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $7 i32.store - local.get $3 + local.get $7 i32.load offset=4 - local.set $5 - local.get $4 + local.set $4 + local.get $5 i32.const 2 i32.shl - local.set $4 + local.set $5 local.get $0 i32.load offset=4 local.set $0 loop $for-loop|0 - local.get $2 - local.get $4 + local.get $3 + local.get $5 i32.lt_u if - local.get $2 - local.get $5 + local.get $3 + local.get $4 i32.add local.get $0 - local.get $2 + local.get $3 i32.add i32.load - local.tee $7 + local.tee $8 i32.store + local.get $8 + if + local.get $7 + local.get $8 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 i32.const 4 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end local.get $4 local.get $5 i32.add - local.set $2 + local.set $0 local.get $1 i32.load offset=4 local.set $1 local.get $6 i32.const 2 i32.shl - local.set $5 - i32.const 0 - local.set $0 + local.set $3 loop $for-loop|1 - local.get $0 - local.get $5 + local.get $2 + local.get $3 i32.lt_u if local.get $0 local.get $2 i32.add - local.get $0 local.get $1 + local.get $2 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 + if + local.get $7 + local.get $4 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end @@ -35139,7 +35001,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $7 return end i32.const 32064 @@ -35153,11 +35015,11 @@ (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35179,9 +35041,9 @@ i32.store local.get $0 i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s + local.tee $2 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -35191,13 +35053,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.load offset=4 - local.get $1 + local.get $2 i32.const 1 i32.sub - local.tee $1 + local.tee $2 i32.const 2 i32.shl i32.add @@ -35205,9 +35067,9 @@ local.tee $3 i32.store local.get $0 - local.get $1 - i32.store offset=12 local.get $2 + i32.store offset=12 + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -35229,23 +35091,23 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -35258,23 +35120,23 @@ i32.store local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add @@ -35284,15 +35146,15 @@ i32.const 3 global.set $~argumentsLength local.get $4 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -35318,23 +35180,23 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -35343,60 +35205,60 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i32.const 0 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $5 i32.store offset=4 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array<~lib/string/String>#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -35408,7 +35270,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -35423,11 +35285,11 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35450,8 +35312,8 @@ local.get $0 i32.load offset=12 local.tee $2 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -35509,24 +35371,24 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array<~lib/string/String>#some (result i32) - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -35539,23 +35401,23 @@ i32.store local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add @@ -35565,7 +35427,7 @@ i32.const 3 global.set $~argumentsLength local.get $4 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load @@ -35578,10 +35440,10 @@ i32.const 1 br $__inlined_func$~lib/array/Array<~lib/string/String>#some end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -35634,37 +35496,40 @@ i32.load offset=12 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 4 i32.add - local.get $3 local.get $2 + local.get $3 i32.const 1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $2 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $export:~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -35710,13 +35575,13 @@ i32.store local.get $0 i32.load offset=12 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -35726,9 +35591,9 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end @@ -35739,7 +35604,7 @@ i32.lt_s if (result i32) local.get $2 - local.get $3 + local.get $4 i32.add local.tee $2 i32.const 0 @@ -35749,9 +35614,9 @@ select else local.get $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select end @@ -35763,51 +35628,52 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $5 local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - local.set $1 - i32.const 0 local.set $0 - local.get $3 + local.get $2 i32.const 2 i32.shl - local.set $3 + local.set $1 loop $while-continue|0 - local.get $0 + local.get $1 local.get $3 - i32.lt_u + i32.gt_u if - local.get $0 - local.get $4 + local.get $3 + local.get $5 i32.add local.get $0 - local.get $1 + local.get $3 i32.add i32.load - local.tee $5 + local.tee $2 i32.store local.get $2 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $4 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.add - local.set $0 + local.set $3 br $while-continue|0 end end @@ -35819,7 +35685,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -35834,11 +35700,11 @@ (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35875,13 +35741,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -35891,69 +35757,69 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $2 + local.get $4 i32.const 2 i32.shl i32.add local.tee $6 - local.get $2 + local.get $1 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $1 - local.get $2 + local.get $4 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -35964,7 +35830,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -35981,11 +35847,11 @@ (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35996,10 +35862,10 @@ i32.store local.get $0 i32.load offset=4 - local.set $5 + local.set $2 local.get $0 i32.load offset=12 - local.set $1 + local.set $4 local.get $3 i32.const 4 i32.sub @@ -36011,51 +35877,51 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $4 i32.const 1 i32.gt_u if - local.get $1 + local.get $4 i32.const 1 i32.shr_u - local.set $3 - local.get $1 + local.set $5 + local.get $4 i32.const 1 i32.sub - local.set $1 + local.set $4 loop $while-continue|0 - local.get $2 - local.get $3 + local.get $1 + local.get $5 i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add - local.tee $4 - i32.load local.tee $6 + i32.load + local.tee $3 i32.store + local.get $6 local.get $4 local.get $1 - local.get $2 i32.sub i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add - local.tee $4 + local.tee $6 i32.load i32.store - local.get $4 local.get $6 + local.get $3 i32.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end @@ -36080,11 +35946,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -36147,11 +36013,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -36234,4 +36100,126 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + 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 $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 9558268068..22c90ca44a 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -48,11 +48,11 @@ (local $0 i32) (local $1 i32) i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -119,7 +119,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -142,7 +142,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -152,15 +152,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -225,30 +225,6 @@ 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) @@ -285,11 +261,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -301,28 +276,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -334,19 +306,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -371,9 +343,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -381,17 +353,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -519,7 +491,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -530,7 +502,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -550,44 +522,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -597,7 +568,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -607,20 +578,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -648,7 +619,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -675,15 +646,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -695,15 +663,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -724,6 +692,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -733,7 +704,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -770,8 +741,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -930,7 +901,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1055,7 +1030,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1065,7 +1040,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1078,14 +1053,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1110,56 +1084,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1307,14 +1278,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1324,17 +1295,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1350,22 +1321,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1376,11 +1347,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1475,10 +1446,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1486,7 +1453,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1497,54 +1467,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1552,16 +1518,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1570,7 +1536,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1578,9 +1544,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1591,11 +1557,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1606,12 +1572,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1624,89 +1590,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1714,7 +1680,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1735,17 +1701,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1891,19 +1857,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1918,7 +1884,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1929,10 +1895,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1940,10 +1906,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1954,7 +1920,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1984,17 +1950,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2009,7 +1975,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2020,10 +1986,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2031,10 +1997,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2045,7 +2011,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2071,17 +2037,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2096,7 +2062,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2107,10 +2073,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2118,10 +2084,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2132,7 +2098,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2169,131 +2135,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2310,59 +2254,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2379,7 +2317,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2390,11 +2328,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2408,17 +2346,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2623,81 +2561,20 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner1 block $folding-inner0 block $invalid - block $~lib/array/Array - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/array/Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $invalid end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end unreachable @@ -2707,7 +2584,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2716,7 +2593,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2736,13 +2613,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 memory.size @@ -2777,7 +2654,7 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $1 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2786,26 +2663,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 8 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2820,13 +2697,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 0 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2852,13 +2729,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2873,13 +2750,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2894,13 +2771,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2915,13 +2792,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2936,13 +2813,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2957,13 +2834,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2978,13 +2855,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 42 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2996,7 +2873,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -3007,8 +2884,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3017,26 +2894,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3047,7 +2924,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store i32.const 8 @@ -3057,25 +2934,28 @@ i32.const 1632 i32.const 8 call $~lib/memory/memory.copy - local.get $0 + local.get $1 local.get $2 i32.store i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 local.get $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $1 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 local.get $2 i32.store offset=4 - local.get $0 + local.get $1 i32.const 8 i32.store offset=8 - local.get $0 + local.get $1 i32.const 2 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -3083,7 +2963,7 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3094,38 +2974,38 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 12 i32.const 9 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.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3135,34 +3015,31 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 12 i32.const 15 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $2 i32.const 0 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 - local.get $2 local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.gt_u - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u i32.or @@ -3174,24 +3051,27 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 - local.get $1 i32.store local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 local.get $0 - local.get $1 i32.store offset=4 - local.get $0 local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 i32.const 18228 global.set $~lib/memory/__stack_pointer @@ -3318,22 +3198,22 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 local.get $1 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3370,9 +3250,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -3380,8 +3257,7 @@ i32.const 1073741820 local.get $1 i32.shr_u - i32.const 1 - i32.lt_u + i32.eqz if i32.const 1056 i32.const 1104 @@ -3394,25 +3270,28 @@ i32.const 1 local.get $1 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $1 local.get $2 + local.get $1 call $~lib/memory/memory.fill local.get $0 - local.get $1 + local.get $2 i32.store + local.get $2 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3420,4 +3299,72 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 25c85b01f1..cbd3c5fff7 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -54,11 +54,11 @@ (local $0 i32) (local $1 i32) i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -125,7 +125,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -148,7 +148,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -158,15 +158,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -231,30 +231,6 @@ 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) @@ -291,11 +267,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -307,28 +282,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -340,19 +312,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -377,9 +349,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -387,17 +359,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -525,7 +497,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -536,7 +508,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -556,44 +528,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -603,7 +574,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -613,20 +584,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -654,7 +625,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -681,15 +652,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -701,15 +669,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -730,6 +698,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -739,7 +710,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -776,8 +747,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -936,7 +907,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1061,7 +1036,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1071,7 +1046,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1084,14 +1059,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1116,56 +1090,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1313,14 +1284,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1330,17 +1301,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1356,22 +1327,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1382,11 +1353,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1481,10 +1452,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1492,7 +1459,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1503,54 +1473,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1558,16 +1524,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1576,7 +1542,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1584,9 +1550,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1597,11 +1563,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1612,12 +1578,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1630,89 +1596,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1720,7 +1686,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1728,61 +1694,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=8 @@ -1942,21 +1853,18 @@ i32.load offset=4 i32.add i32.load16_s - local.set $0 + local.tee $0 + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $0 - 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 + select ) (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 @@ -2091,21 +1999,18 @@ i32.load offset=4 i32.add i32.load16_u - local.set $0 + local.tee $0 + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $0 - 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 + select ) (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 @@ -2302,20 +2207,18 @@ end local.get $0 i32.load offset=4 + local.get $1 + local.get $1 + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - i32.const 8 - i32.shl - local.get $1 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - end + select i32.store16 ) (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) @@ -2412,20 +2315,18 @@ end local.get $0 i32.load offset=4 + local.get $1 + local.get $1 + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - i32.const 8 - i32.shl - local.get $1 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - end + select i32.store16 ) (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) @@ -2529,7 +2430,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2540,6 +2441,8 @@ (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 @@ -2550,10 +2453,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $5 i64.const 0 i64.store - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 memory.size @@ -2588,7 +2491,7 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $0 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2597,14 +2500,14 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2618,112 +2521,156 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 2 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store end - local.get $1 + local.get $0 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 8 call $~lib/memory/memory.fill - local.get $1 - local.get $2 + local.get $0 + local.get $4 i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $4 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $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.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $0 + local.get $4 i32.store offset=4 - local.get $1 + local.get $0 i32.const 8 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 local.get $0 - local.get $1 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 246 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 224 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 88 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 159 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 130 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 5 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 6 i32.const 67 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 7 i32.const 95 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load - local.tee $0 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub - local.get $1 + local.get $0 i32.load offset=8 call $~lib/dataview/DataView#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2737,7 +2684,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2751,7 +2698,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2765,7 +2712,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2779,7 +2726,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2793,7 +2740,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2807,7 +2754,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2821,7 +2768,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2835,7 +2782,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2849,7 +2796,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2863,7 +2810,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const 7936550095674706383278551e126 @@ -2876,7 +2823,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const -411777475818852546741639e241 @@ -2889,7 +2836,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const -10 @@ -2902,7 +2849,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getInt8 i32.const -32 @@ -2915,7 +2862,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/dataview/DataView#getInt8 i32.const 88 @@ -2928,7 +2875,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/dataview/DataView#getInt8 i32.const -97 @@ -2941,7 +2888,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 call $~lib/dataview/DataView#getInt8 i32.const -126 @@ -2954,7 +2901,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 call $~lib/dataview/DataView#getInt8 i32.const 101 @@ -2967,7 +2914,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 call $~lib/dataview/DataView#getInt8 i32.const 67 @@ -2980,7 +2927,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 7 call $~lib/dataview/DataView#getInt8 i32.const 95 @@ -2993,7 +2940,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3009,7 +2956,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3025,7 +2972,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3041,7 +2988,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3057,7 +3004,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3073,7 +3020,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3089,7 +3036,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3105,7 +3052,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3121,7 +3068,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3137,7 +3084,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3153,7 +3100,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3169,7 +3116,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3185,7 +3132,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3201,7 +3148,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3217,7 +3164,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3231,7 +3178,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3245,7 +3192,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3259,7 +3206,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3273,7 +3220,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3287,7 +3234,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3301,7 +3248,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3315,7 +3262,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3329,7 +3276,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3343,7 +3290,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3357,7 +3304,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const 6864441868736323830 @@ -3370,7 +3317,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const -657428103485373601 @@ -3383,7 +3330,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 246 @@ -3396,7 +3343,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getUint8 i32.const 224 @@ -3409,7 +3356,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/dataview/DataView#getUint8 i32.const 88 @@ -3422,7 +3369,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/dataview/DataView#getUint8 i32.const 159 @@ -3435,7 +3382,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 call $~lib/dataview/DataView#getUint8 i32.const 130 @@ -3448,7 +3395,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 call $~lib/dataview/DataView#getUint8 i32.const 101 @@ -3461,7 +3408,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 call $~lib/dataview/DataView#getUint8 i32.const 67 @@ -3474,7 +3421,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 7 call $~lib/dataview/DataView#getUint8 i32.const 95 @@ -3487,7 +3434,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3503,7 +3450,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3519,7 +3466,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3535,7 +3482,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3551,7 +3498,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3567,7 +3514,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3583,7 +3530,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3599,7 +3546,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3615,7 +3562,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3631,7 +3578,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3647,7 +3594,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3663,7 +3610,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3679,7 +3626,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3695,7 +3642,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3711,7 +3658,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3725,7 +3672,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3739,7 +3686,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3753,7 +3700,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3767,7 +3714,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3781,7 +3728,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3795,7 +3742,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3809,7 +3756,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3823,7 +3770,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3837,7 +3784,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3851,7 +3798,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 6864441868736323830 @@ -3864,7 +3811,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -657428103485373601 @@ -3877,11 +3824,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1.5976661625240943e-18 i32.const 1 call $~lib/dataview/DataView#setFloat32 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -3895,11 +3842,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1976281973381696323584 i32.const 0 call $~lib/dataview/DataView#setFloat32 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -3913,11 +3860,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const -1094252199637739024055454e124 i32.const 1 call $~lib/dataview/DataView#setFloat64 - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const -1094252199637739024055454e124 @@ -3930,11 +3877,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const 6.022586634778589e-103 i32.const 0 call $~lib/dataview/DataView#setFloat64 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const 6.022586634778589e-103 @@ -3947,7 +3894,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.eqz if @@ -3958,11 +3905,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 i32.const 108 i32.store8 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const 108 @@ -3975,11 +3922,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -13360 i32.const 1 call $~lib/dataview/DataView#setInt16 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3995,11 +3942,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 14689 i32.const 0 call $~lib/dataview/DataView#setInt16 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -4015,11 +3962,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1204680201 i32.const 1 call $~lib/dataview/DataView#setInt32 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -4033,11 +3980,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 660673230 i32.const 0 call $~lib/dataview/DataView#setInt32 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -4051,11 +3998,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const -3290739641816099749 i32.const 1 call $~lib/dataview/DataView#setInt64 - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const -3290739641816099749 @@ -4068,11 +4015,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 8178932412950708047 i32.const 0 call $~lib/dataview/DataView#setInt64 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const 8178932412950708047 @@ -4085,7 +4032,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.eqz if @@ -4096,11 +4043,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 i32.const 238 i32.store8 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 238 @@ -4113,11 +4060,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 58856 i32.const 1 call $~lib/dataview/DataView#setUint16 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -4133,11 +4080,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 60400 i32.const 0 call $~lib/dataview/DataView#setUint16 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -4153,11 +4100,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -846805744 i32.const 1 call $~lib/dataview/DataView#setUint32 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -4171,11 +4118,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -1510791631 i32.const 0 call $~lib/dataview/DataView#setUint32 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4189,11 +4136,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 2334704782995986958 i32.const 1 call $~lib/dataview/DataView#setUint64 - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 2334704782995986958 @@ -4206,11 +4153,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const -7123186897289856329 i32.const 0 call $~lib/dataview/DataView#setUint64 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -7123186897289856329 @@ -4224,24 +4171,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.load local.tee $1 - i32.store offset=4 local.get $0 + i32.load + local.tee $0 + i32.store offset=4 local.get $1 + local.get $0 i32.const 0 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 call $~lib/dataview/DataView#constructor - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub if @@ -4252,7 +4199,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 8 i32.ne @@ -4314,6 +4261,8 @@ ) (func $~lib/dataview/DataView#constructor (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 @@ -4337,18 +4286,15 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $4 i32.const 0 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -4371,24 +4317,90 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 local.get $0 i32.store - local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $3 + if + local.get $4 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $0 + 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 $3 + 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 $3 + 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 $0 local.get $1 i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 ) ) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index f3d2b4092c..0c7c84b277 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -233,7 +233,20 @@ (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 $7 i32) + local.get $6 + i64.extend_i32_s + local.get $5 + i32.const 1000 + i32.mul + i64.extend_i32_s + local.get $4 + i32.const 60000 + i32.mul + i64.extend_i32_s + local.get $3 + i32.const 3600000 + i32.mul + i64.extend_i32_s local.get $0 local.get $1 i32.const 2 @@ -249,21 +262,7 @@ select i32.const 400 i32.div_s - local.set $7 - local.get $6 - i64.extend_i32_s - local.get $5 - i32.const 1000 - i32.mul - i64.extend_i32_s - local.get $4 - i32.const 60000 - i32.mul - i64.extend_i32_s - local.get $3 - i32.const 3600000 - i32.mul - i64.extend_i32_s + local.set $3 local.get $2 i32.const -3 i32.const 9 @@ -281,7 +280,7 @@ i32.div_u i32.add local.get $0 - local.get $7 + local.get $3 i32.const 400 i32.mul i32.sub @@ -297,7 +296,7 @@ i32.div_u i32.sub i32.add - local.get $7 + local.get $3 i32.const 146097 i32.mul i32.add @@ -318,47 +317,47 @@ local.get $0 i32.const 719468 i32.add - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 146096 i32.sub - local.get $0 + local.get $1 i32.const 0 i32.ge_s select i32.const 146097 i32.div_s - local.set $2 + local.set $0 + local.get $1 local.get $0 - local.get $2 i32.const 146097 i32.mul i32.sub - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1460 i32.div_u i32.sub - local.get $0 + local.get $1 i32.const 36524 i32.div_u i32.add - local.get $0 + local.get $1 i32.const 146096 i32.div_u i32.sub i32.const 365 i32.div_u - local.set $1 - local.get $0 + local.set $2 local.get $1 + local.get $2 i32.const 365 i32.mul - local.get $1 + local.get $2 i32.const 2 i32.shr_u i32.add - local.get $1 + local.get $2 i32.const 100 i32.div_u i32.sub @@ -370,9 +369,9 @@ i32.add i32.const 153 i32.div_s - local.set $0 + local.set $1 local.get $3 - local.get $0 + local.get $1 i32.const 153 i32.mul i32.const 2 @@ -385,20 +384,20 @@ global.set $~lib/date/_day i32.const 3 i32.const -9 - local.get $0 + local.get $1 i32.const 10 i32.lt_s select - local.get $0 + local.get $1 i32.add - local.tee $0 + local.tee $1 global.set $~lib/date/_month - local.get $2 + local.get $0 i32.const 400 i32.mul - local.get $1 + local.get $2 i32.add - local.get $0 + local.get $1 i32.const 2 i32.le_s i32.add @@ -407,19 +406,19 @@ (local $0 i32) (local $1 i32) i32.const 1392 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6448 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6544 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1200 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2304 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -486,7 +485,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -509,7 +508,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -519,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -592,30 +591,6 @@ 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) @@ -652,11 +627,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -668,28 +642,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -701,19 +672,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -738,9 +709,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -748,17 +719,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -886,7 +857,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -897,7 +868,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -917,44 +888,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -964,7 +934,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -974,20 +944,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1015,7 +985,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1042,15 +1012,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1062,15 +1029,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1091,6 +1058,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1100,7 +1070,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1137,8 +1107,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1297,7 +1267,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1422,7 +1396,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1432,7 +1406,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1445,14 +1419,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1477,56 +1450,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) 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 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 local.get $1 i32.clz i32.sub - local.tee $2 - i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 1 i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 i32.sub local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1674,14 +1644,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1691,17 +1661,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1717,22 +1687,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1743,11 +1713,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1842,10 +1812,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1853,7 +1819,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1864,54 +1833,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1919,16 +1884,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1937,7 +1902,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1945,9 +1910,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1958,11 +1923,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1973,12 +1938,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1991,89 +1956,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -2081,7 +2046,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2238,10 +2203,9 @@ call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i64) local.get $1 local.get $0 i32.load offset=8 @@ -2250,45 +2214,45 @@ return end local.get $0 + i64.const 86400000 + i64.const 0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 0 + i64.lt_s + select + local.get $2 + i64.add + local.get $0 i32.load local.get $0 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.sub - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 399 i32.sub - local.get $2 + local.get $3 i32.const 0 i32.ge_s select i32.const 400 i32.div_s - local.set $4 - local.get $0 - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $5 - i64.const 86400000 - i64.const 0 - local.get $5 - i64.const 0 - i64.lt_s - select - i64.add + local.set $0 local.get $1 i32.const -3 i32.const 9 - local.get $3 + local.get $4 i32.const 2 i32.gt_s select - local.get $3 + local.get $4 i32.add i32.const 153 i32.mul @@ -2297,24 +2261,24 @@ i32.const 5 i32.div_u i32.add - local.get $2 - local.get $4 + local.get $3 + local.get $0 i32.const 400 i32.mul i32.sub - local.tee $0 + local.tee $1 i32.const 365 i32.mul - local.get $0 + local.get $1 i32.const 2 i32.shr_u i32.add - local.get $0 + local.get $1 i32.const 100 i32.div_u i32.sub i32.add - local.get $4 + local.get $0 i32.const 146097 i32.mul i32.add @@ -2327,9 +2291,9 @@ call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) - (local $4 i64) + (local $4 i32) local.get $1 local.get $0 i32.load offset=4 @@ -2338,47 +2302,47 @@ return end local.get $0 + local.get $0 i32.load local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.le_s i32.sub - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 399 i32.sub - local.get $1 + local.get $3 i32.const 0 i32.ge_s select i32.const 400 i32.div_s - local.set $3 - local.get $0 + local.set $1 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $4 - i64.const 86400000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add local.get $0 i32.load offset=8 i32.const -3 i32.const 9 - local.get $2 + local.get $4 i32.const 2 i32.gt_s select - local.get $2 + local.get $4 i32.add i32.const 153 i32.mul @@ -2387,8 +2351,8 @@ i32.const 5 i32.div_u i32.add - local.get $1 local.get $3 + local.get $1 i32.const 400 i32.mul i32.sub @@ -2404,7 +2368,7 @@ i32.div_u i32.sub i32.add - local.get $3 + local.get $1 i32.const 146097 i32.mul i32.add @@ -2417,9 +2381,9 @@ call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) - (local $4 i64) + (local $4 i32) local.get $1 local.get $0 i32.load @@ -2427,46 +2391,46 @@ if return end + local.get $0 local.get $1 local.get $0 i32.load offset=4 - local.tee $2 + local.tee $4 i32.const 2 i32.le_s i32.sub - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 399 i32.sub - local.get $1 + local.get $3 i32.const 0 i32.ge_s select i32.const 400 i32.div_s - local.set $3 - local.get $0 + local.set $1 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $4 - i64.const 86400000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add local.get $0 i32.load offset=8 i32.const -3 i32.const 9 - local.get $2 + local.get $4 i32.const 2 i32.gt_s select - local.get $2 + local.get $4 i32.add i32.const 153 i32.mul @@ -2475,8 +2439,8 @@ i32.const 5 i32.div_u i32.add - local.get $1 local.get $3 + local.get $1 i32.const 400 i32.mul i32.sub @@ -2492,7 +2456,7 @@ i32.div_u i32.sub i32.add - local.get $3 + local.get $1 i32.const 146097 i32.mul i32.add @@ -2509,25 +2473,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (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 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if @@ -2536,9 +2500,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1872 - local.set $1 br $__inlined_func$~lib/util/number/itoa32 end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.sub @@ -2546,12 +2510,10 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $3 + local.tee $2 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) @@ -2597,14 +2559,14 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $while-continue|0 local.get $0 @@ -2614,20 +2576,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $4 + local.set $3 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $4 + i32.add + local.get $3 i32.const 100 i32.div_u i32.const 2 @@ -2635,7 +2597,7 @@ i32.const 1884 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -2654,13 +2616,13 @@ i32.const 100 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 100 @@ -2680,12 +2642,12 @@ i32.const 10 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 2 @@ -2695,21 +2657,21 @@ i32.load i32.store else - local.get $2 + local.get $1 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $3 + local.get $2 if - local.get $1 + local.get $4 i32.const 45 i32.store16 end @@ -2717,8 +2679,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2733,17 +2695,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2889,19 +2851,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2916,7 +2878,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2927,10 +2889,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2938,10 +2900,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2952,7 +2914,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2982,17 +2944,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3007,7 +2969,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3018,10 +2980,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3029,10 +2991,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3043,7 +3005,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3069,17 +3031,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3094,7 +3056,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3105,10 +3067,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3116,10 +3078,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3130,7 +3092,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3167,131 +3129,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3308,59 +3248,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3377,7 +3311,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3388,11 +3322,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3406,17 +3340,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3625,25 +3559,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (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 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 20 i32.sub @@ -3652,7 +3586,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3661,9 +3595,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3671,31 +3605,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3456 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -3711,12 +3644,11 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $1 @@ -3829,7 +3761,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz if i32.const 0 @@ -3841,7 +3773,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.eqz if i32.const -1 @@ -3854,25 +3786,25 @@ i32.gt_s select local.tee $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select local.set $2 - local.get $3 local.get $4 + local.get $3 i32.sub - local.set $3 + local.set $4 loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.le_s if local.get $0 local.get $2 local.get $1 - local.get $4 + local.get $3 call $~lib/util/string/compareImpl i32.eqz if @@ -3888,66 +3820,6 @@ end i32.const -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 1264 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - 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) @@ -3958,21 +3830,23 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 + local.tee $2 i32.load offset=12 - local.tee $7 + local.tee $3 i32.const 1 i32.add - local.tee $8 - local.tee $3 - local.get $0 - i32.load offset=8 + local.tee $4 local.tee $5 + local.get $2 + i32.load offset=8 + local.tee $6 i32.const 2 i32.shr_u i32.gt_u if - local.get $3 + local.get $5 i32.const 268435455 i32.gt_u if @@ -3984,38 +3858,38 @@ unreachable end block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $5 + local.get $6 i32.const 1 i32.shl - local.tee $2 + local.tee $7 i32.const 1073741820 - local.get $2 + local.get $7 i32.const 1073741820 i32.lt_u select - local.tee $2 - local.get $3 + local.tee $7 + local.get $5 i32.const 8 - local.get $3 + local.get $5 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u + local.tee $5 + local.get $5 + local.get $7 + i32.lt_u select - local.tee $3 - local.tee $2 - local.get $0 + local.tee $7 + local.tee $8 + local.get $2 i32.load - local.tee $9 - local.tee $6 + local.tee $10 + local.tee $11 i32.const 20 i32.sub - local.tee $4 + local.tee $9 i32.load i32.const -4 i32.and @@ -4023,69 +3897,75 @@ i32.sub i32.le_u if - local.get $4 - local.get $2 + local.get $9 + local.get $8 i32.store offset=16 - local.get $6 + local.get $11 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $2 - local.get $4 + local.get $8 + local.get $9 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $10 - local.get $6 - local.get $2 - local.get $4 + local.tee $5 + local.get $11 + local.get $8 + local.get $9 i32.load offset=16 - local.tee $4 - local.get $2 - local.get $4 + local.tee $9 + local.get $8 + local.get $9 i32.lt_u select call $~lib/memory/memory.copy - local.get $10 + local.get $5 end - local.tee $2 - local.get $5 + local.tee $5 + local.get $6 i32.add - local.get $3 - local.get $5 + local.get $7 + local.get $6 i32.sub call $~lib/memory/memory.fill - local.get $2 - local.get $9 + local.get $5 + local.get $10 i32.ne if - local.get $0 local.get $2 + local.get $5 i32.store - local.get $0 local.get $2 + local.get $5 i32.store offset=4 - local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $2 + local.get $5 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - local.get $0 - local.get $3 + local.get $2 + local.get $7 i32.store offset=8 end local.get $0 i32.load offset=4 - local.get $7 + local.get $3 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 + if + local.get $2 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $8 + local.get $4 i32.store offset=12 ) (func $~lib/util/string/strtol (param $0 i32) (result i32) @@ -4100,7 +3980,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -4108,27 +3988,27 @@ end local.get $0 i32.load16_u - local.set $1 + local.set $2 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $1 + local.get $2 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $2 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $1 + local.get $2 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $1 + local.get $2 i32.const -8192 i32.add i32.const 10 @@ -4137,31 +4017,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $2 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 65279 i32.eq br_if $case6|0 @@ -4178,29 +4058,28 @@ i32.add local.tee $0 i32.load16_u - local.set $1 - local.get $2 + local.set $2 + local.get $1 i32.const 1 i32.sub - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 1 local.set $3 - i32.const 1 - local.get $1 + local.get $2 i32.const 43 i32.eq - local.get $1 + local.get $2 i32.const 45 i32.eq - select - if - local.get $2 + i32.or + if (result i32) + local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -4208,7 +4087,7 @@ end i32.const -1 i32.const 1 - local.get $1 + local.get $2 i32.const 45 i32.eq select @@ -4218,16 +4097,15 @@ i32.add local.tee $0 i32.load16_u - local.set $1 + else + local.get $2 end - local.get $2 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $1 i32.const 48 i32.eq - select + local.get $1 + i32.const 2 + i32.gt_s + i32.and if block $break|1 block $case2|1 @@ -4236,15 +4114,15 @@ i32.load16_u offset=2 i32.const 32 i32.or - local.tee $1 + local.tee $2 i32.const 98 i32.ne if - local.get $1 + local.get $2 i32.const 111 i32.eq br_if $case1|1 - local.get $1 + local.get $2 i32.const 120 i32.eq br_if $case2|1 @@ -4254,10 +4132,10 @@ i32.const 4 i32.add local.set $0 - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 i32.const 2 local.set $4 br $break|1 @@ -4266,10 +4144,10 @@ i32.const 4 i32.add local.set $0 - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 i32.const 8 local.set $4 br $break|1 @@ -4278,10 +4156,10 @@ i32.const 4 i32.add local.set $0 - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 i32.const 16 local.set $4 end @@ -4293,40 +4171,40 @@ local.set $4 loop $while-continue|2 block $while-break|2 - local.get $2 - local.tee $1 + local.get $1 + local.tee $2 i32.const 1 i32.sub - local.set $2 - local.get $1 + local.set $1 + local.get $2 if local.get $0 i32.load16_u - local.tee $1 + local.tee $2 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 48 i32.sub else - local.get $1 + local.get $2 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $1 + local.get $2 i32.const 55 i32.sub else - local.get $1 + local.get $2 i32.const 87 i32.sub - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.const 97 i32.sub i32.const 25 @@ -4334,7 +4212,7 @@ select end end - local.tee $1 + local.tee $2 local.get $4 i32.ge_u if @@ -4346,7 +4224,7 @@ end br $while-break|2 end - local.get $1 + local.get $2 local.get $4 local.get $5 i32.mul @@ -4368,104 +4246,99 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $invalid - block $~lib/array/Array + block $folding-inner0 + block $invalid 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~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 + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end return end local.get $0 - local.tee $1 - local.get $0 i32.const 20 i32.sub i32.load offset=16 + local.get $0 i32.add - local.set $2 + local.set $1 loop $while-continue|0 + local.get $0 local.get $1 - local.get $2 i32.lt_u if - local.get $1 + local.get $0 i32.load - local.tee $0 + local.tee $2 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $2 + local.tee $1 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add local.set $3 - loop $while-continue|00 - local.get $2 + loop $while-continue|01 + local.get $1 local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.load - local.tee $0 + local.tee $2 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 - br $while-continue|00 + local.set $1 + br $while-continue|01 end end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start global.get $~started @@ -4478,9 +4351,10 @@ ) (func $~lib/date/Date#toISOString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) - (local $4 i64) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 112 i32.sub @@ -4544,29 +4418,28 @@ local.tee $1 i32.const 0 i32.lt_s - local.set $2 - i32.const 1 + local.tee $3 local.get $1 i32.const 10000 i32.ge_s - local.get $2 - select + i32.or if global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 + local.get $4 i32.const 1616 i32.const 1648 - local.get $2 + local.get $3 select - local.tee $2 + local.tee $3 i32.store local.get $1 - local.get $1 i32.const 31 i32.shr_s - local.tee $1 - i32.add + local.tee $4 local.get $1 + local.get $4 + i32.add i32.xor call $~lib/number/I32#toString local.set $1 @@ -4584,7 +4457,6 @@ local.get $1 i32.store offset=4 local.get $3 - local.get $2 local.get $1 call $~lib/string/String.__concat local.tee $1 @@ -4619,22 +4491,22 @@ local.get $0 i32.load offset=4 call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=104 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=108 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=96 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4653,22 +4525,22 @@ local.get $0 i32.load offset=8 call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=84 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=92 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=80 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4684,39 +4556,39 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=60 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $4 - i64.const 86400000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 3600000 i32.div_s call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=68 + local.tee $4 local.get $3 + i32.store offset=68 + local.get $4 i32.const 1872 i32.store offset=76 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=64 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4732,39 +4604,39 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=44 + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $4 - i64.const 3600000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 60000 i32.div_s call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=52 + local.tee $4 local.get $3 + i32.store offset=52 + local.get $4 i32.const 1872 i32.store offset=60 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=48 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4780,39 +4652,39 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=28 + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $4 - i64.const 60000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 1000 i32.div_s call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=36 + local.tee $4 local.get $3 + i32.store offset=36 + local.get $4 i32.const 1872 i32.store offset=44 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=32 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4828,26 +4700,26 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s - local.tee $4 - i64.const 1000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 i32.const 1872 i32.store offset=28 local.get $0 @@ -4917,74 +4789,73 @@ local.get $1 i32.const 0 i32.store offset=40 - local.get $1 i32.const 28 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.const 4560 i32.const 28 call $~lib/memory/memory.copy local.get $1 - local.tee $3 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.const 4992 i32.const 48 call $~lib/memory/memory.copy - local.get $1 + local.get $3 i32.store offset=4 local.get $0 i32.load - local.tee $4 + local.tee $2 local.get $0 i32.load offset=4 - local.tee $6 + local.tee $5 i32.const 3 i32.lt_s i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.ge_s - local.set $5 + local.set $7 local.get $0 i32.load offset=8 - local.tee $7 - local.get $6 + local.tee $4 + local.get $5 i32.const 1579 i32.add i32.load8_u - local.get $2 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 3 i32.sub - local.get $5 + local.get $7 select i32.const 4 i32.div_s - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 99 i32.sub - local.get $5 + local.get $7 select i32.const 100 i32.div_s i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 399 i32.sub - local.get $5 + local.get $7 select i32.const 400 i32.div_s i32.add + local.get $1 i32.add i32.add i32.add @@ -4998,38 +4869,38 @@ i32.lt_s select i32.add - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 31 i32.shr_s - local.tee $0 + local.tee $7 i32.add - local.get $0 + local.get $7 i32.xor call $~lib/number/I32#toString - local.set $0 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=12 - local.get $0 + local.get $7 i32.const 4 call $~lib/string/String#padStart local.tee $0 i32.store offset=16 - local.get $4 + local.get $2 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 1616 i32.store offset=8 - local.get $4 + local.get $2 i32.const 1616 local.get $0 call $~lib/string/String.__concat @@ -5037,34 +4908,34 @@ i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $2 + local.tee $2 + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add i32.load - local.tee $2 + local.tee $1 i32.store offset=32 - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $3 i32.add i32.load - local.tee $1 + local.tee $2 i32.store offset=36 - local.get $2 local.get $1 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=24 - local.get $7 + local.get $4 call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer @@ -5106,9 +4977,9 @@ global.set $~lib/memory/__stack_pointer ) (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 40 @@ -5126,73 +4997,73 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i64.const 0 i64.store offset=16 - local.get $1 + local.get $2 i64.const 0 i64.store offset=24 - local.get $1 + local.get $2 i64.const 0 i64.store offset=32 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $3 - i64.const 86400000 - i64.const 0 - local.get $3 + local.tee $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 i32.div_s call $~lib/number/I32#toString - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store offset=32 + local.tee $3 local.get $2 + i32.store offset=32 + local.get $3 i32.const 1872 i32.store offset=36 - local.get $1 + local.get $2 i32.const 2 call $~lib/string/String#padStart - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 3520 i32.store offset=28 - local.get $1 + local.get $2 i32.const 3520 call $~lib/string/String.__concat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=16 + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $3 - i64.const 3600000 - i64.const 0 - local.get $3 + local.tee $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -5213,34 +5084,34 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=20 - local.get $1 + local.get $3 local.get $2 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 3520 i32.store offset=12 - local.get $1 + local.get $2 i32.const 3520 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $3 - i64.const 60000 - i64.const 0 - local.get $3 + local.tee $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -5248,10 +5119,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 1872 i32.store offset=16 local.get $0 @@ -5261,7 +5132,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $~lib/string/String.__concat global.get $~lib/memory/__stack_pointer @@ -5271,10 +5142,10 @@ ) (func $~lib/date/Date#toUTCString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -5345,112 +5216,112 @@ i32.const 48 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.const 6048 i32.const 48 call $~lib/memory/memory.copy - local.get $1 + local.get $4 i32.store offset=4 local.get $0 i32.load - local.tee $6 + local.tee $5 local.get $0 i32.load offset=4 - local.tee $7 + local.tee $6 i32.const 3 i32.lt_s i32.sub - local.tee $4 + local.tee $1 i32.const 0 i32.ge_s - local.set $2 + local.set $7 local.get $0 i32.load offset=8 local.tee $8 - local.get $7 + local.get $6 i32.const 1579 i32.add i32.load8_u - local.get $4 - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 3 i32.sub - local.get $2 + local.get $7 select i32.const 4 i32.div_s - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 99 i32.sub - local.get $2 + local.get $7 select i32.const 100 i32.div_s i32.sub - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 399 i32.sub - local.get $2 + local.get $7 select i32.const 400 i32.div_s i32.add + local.get $1 i32.add i32.add i32.add i32.const 7 i32.rem_s - local.tee $2 + local.tee $1 i32.const 7 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.lt_s select i32.add - local.set $9 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $6 + local.get $5 + local.get $5 i32.const 31 i32.shr_s - local.tee $2 + local.tee $9 i32.add - local.get $2 + local.get $9 i32.xor call $~lib/number/I32#toString - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=12 - local.get $2 + local.get $9 i32.const 4 call $~lib/string/String#padStart - local.tee $4 + local.tee $1 i32.store offset=16 - local.get $6 + local.get $5 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i32.const 1616 i32.store offset=8 - local.get $2 + local.get $5 i32.const 1616 - local.get $4 + local.get $1 call $~lib/string/String.__concat - local.tee $4 + local.tee $1 i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $7 i32.const 2 i32.shl local.get $3 @@ -5460,47 +5331,47 @@ i32.store offset=80 local.get $8 call $~lib/number/I32#toString - local.set $2 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store offset=88 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=92 - local.get $2 + local.get $5 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store offset=84 local.get $3 - local.get $2 + local.get $5 call $~lib/string/String.__concat local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=72 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $4 i32.add i32.load - local.tee $1 + local.tee $4 i32.store offset=76 local.get $3 - local.get $1 + local.get $4 call $~lib/string/String.__concat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=68 + local.get $3 local.get $1 - local.get $4 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5512,18 +5383,18 @@ local.get $1 i32.const 5072 call $~lib/string/String.__concat - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=52 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $5 + local.tee $2 i64.const 86400000 i64.const 0 - local.get $5 + local.get $2 i64.const 0 i64.lt_s select @@ -5534,21 +5405,21 @@ call $~lib/number/I32#toString local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 local.get $3 i32.store offset=60 - local.get $1 + local.get $4 i32.const 1872 i32.store offset=68 local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=56 - local.get $2 local.get $1 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5560,18 +5431,18 @@ local.get $1 i32.const 3520 call $~lib/string/String.__concat - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=36 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $5 + local.tee $2 i64.const 3600000 i64.const 0 - local.get $5 + local.get $2 i64.const 0 i64.lt_s select @@ -5582,21 +5453,21 @@ call $~lib/number/I32#toString local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 local.get $3 i32.store offset=44 - local.get $1 + local.get $4 i32.const 1872 i32.store offset=52 local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=40 - local.get $2 local.get $1 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5608,18 +5479,18 @@ local.get $1 i32.const 3520 call $~lib/string/String.__concat - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=12 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $5 + local.tee $2 i64.const 60000 i64.const 0 - local.get $5 + local.get $2 i64.const 0 i64.lt_s select @@ -5628,22 +5499,22 @@ i32.const 1000 i32.div_s call $~lib/number/I32#toString - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=28 + local.tee $3 local.get $0 + i32.store offset=28 + local.get $3 i32.const 1872 i32.store offset=36 - local.get $1 + local.get $0 i32.const 2 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=24 - local.get $3 + local.get $1 local.get $0 call $~lib/string/String.__concat local.set $0 @@ -5686,13 +5557,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i64.const 0 i64.store - local.get $2 + local.get $5 i64.const 0 i64.store offset=8 - local.get $2 + local.get $5 i64.const 0 i64.store offset=16 block $folding-inner2 @@ -5714,10 +5585,13 @@ i32.load offset=4 local.get $0 i32.store - local.get $1 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end br $folding-inner0 end local.get $0 @@ -5726,16 +5600,16 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $2 + local.set $8 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $7 + local.tee $5 if - local.get $2 + local.get $8 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -5750,7 +5624,7 @@ br $folding-inner1 end else - local.get $2 + local.get $8 i32.eqz if i32.const 0 @@ -5759,9 +5633,9 @@ br $folding-inner1 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $8 i32.const 2147483647 - local.get $2 + local.get $8 i32.const 2147483647 i32.ne select @@ -5771,7 +5645,7 @@ i32.store local.get $1 i32.load offset=4 - local.set $5 + local.set $4 loop $for-loop|0 local.get $2 local.get $3 @@ -5781,9 +5655,9 @@ i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 local.get $3 i32.const 1 i32.shl @@ -5794,14 +5668,17 @@ local.get $3 i32.const 2 i32.shl - local.get $5 - i32.add local.get $4 + i32.add + local.get $5 i32.store - local.get $1 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $1 + local.get $5 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 i32.const 1 i32.add @@ -5819,38 +5696,38 @@ loop $while-continue|1 local.get $0 local.get $1 - local.get $4 + local.get $2 call $~lib/string/String#indexOf - local.tee $5 + local.tee $6 i32.const -1 i32.xor if - local.get $5 - local.get $4 + local.get $6 + local.get $2 i32.sub - local.tee $6 + local.tee $7 i32.const 0 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 1 i32.shl - local.tee $8 + local.tee $9 i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store offset=16 - local.get $6 - local.get $4 + local.get $7 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $8 + local.get $9 call $~lib/memory/memory.copy local.get $3 - local.get $6 + local.get $7 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer @@ -5860,21 +5737,21 @@ i32.const 3456 call $~lib/array/Array<~lib/string/String>#push end - local.get $9 + local.get $4 i32.const 1 i32.add - local.tee $9 + local.tee $4 i32.const 2147483647 i32.eq br_if $folding-inner2 local.get $5 - local.get $7 + local.get $6 i32.add - local.set $4 + local.set $2 br $while-continue|1 end end - local.get $4 + local.get $2 i32.eqz if local.get $3 @@ -5882,8 +5759,8 @@ call $~lib/array/Array<~lib/string/String>#push br $folding-inner2 end + local.get $8 local.get $2 - local.get $4 i32.sub local.tee $1 i32.const 0 @@ -5893,21 +5770,21 @@ local.get $1 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $1 local.get $4 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $2 + local.get $1 call $~lib/memory/memory.copy local.get $3 - local.get $1 + local.get $4 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer @@ -5952,7 +5829,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 28 i32.sub @@ -6005,20 +5881,20 @@ i32.const 3488 i32.const 0 call $~lib/string/String#indexOf - local.tee $2 + local.tee $6 i32.const -1 i32.xor if global.get $~lib/memory/__stack_pointer local.get $0 i32.const 0 - local.get $2 + local.get $6 call $~lib/string/String#substring local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $6 i32.const 1 i32.add i32.const 2147483647 @@ -6036,7 +5912,7 @@ i32.store offset=12 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $6 i32.const 1 i32.le_s if @@ -6050,24 +5926,24 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=16 - local.get $2 + local.get $3 call $~lib/util/string/strtol - local.set $5 + local.set $3 local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $2 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store offset=16 - local.get $2 - call $~lib/util/string/strtol - local.set $6 local.get $4 + call $~lib/util/string/strtol + local.set $4 + local.get $6 i32.const 3 i32.ge_s if @@ -6084,23 +5960,23 @@ i32.const 3552 i32.const 0 call $~lib/string/String#indexOf - local.tee $2 + local.tee $6 i32.const -1 i32.xor if local.get $0 i32.const 0 - local.get $2 + local.get $6 call $~lib/string/String#substring - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=16 - local.get $3 + local.get $2 call $~lib/util/string/strtol - local.set $3 + local.set $2 local.get $0 - local.get $2 + local.get $6 i32.const 1 i32.add i32.const 2147483647 @@ -6111,11 +5987,11 @@ i32.store offset=16 local.get $0 call $~lib/util/string/strtol - local.set $7 + local.set $5 else local.get $0 call $~lib/util/string/strtol - local.set $3 + local.set $2 end end end @@ -6127,40 +6003,40 @@ local.get $1 i32.const 1616 call $~lib/string/String#split - local.tee $2 + local.tee $0 i32.store offset=24 - local.get $2 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/util/string/strtol i32.const 1 local.set $1 - local.get $2 + local.get $0 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 2 i32.ge_s if (result i32) - local.get $2 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/util/string/strtol local.set $1 - local.get $8 + local.get $7 i32.const 3 i32.ge_s if (result i32) - local.get $2 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.set $0 @@ -6178,10 +6054,10 @@ local.set $0 local.get $1 local.get $0 - local.get $5 - local.get $6 local.get $3 - local.get $7 + local.get $4 + local.get $2 + local.get $5 call $~lib/date/epochMillis call $~lib/date/Date#constructor global.get $~lib/memory/__stack_pointer @@ -6194,7 +6070,6 @@ (local $1 i64) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 36 i32.sub @@ -6521,17 +6396,17 @@ call $~lib/builtins/abort unreachable end + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -6546,17 +6421,17 @@ call $~lib/builtins/abort unreachable end + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -6571,17 +6446,17 @@ call $~lib/builtins/abort unreachable end + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -6596,17 +6471,17 @@ call $~lib/builtins/abort unreachable end + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 706 @@ -6660,17 +6535,17 @@ call $~lib/builtins/abort unreachable end + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -6685,17 +6560,17 @@ call $~lib/builtins/abort unreachable end + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -6710,17 +6585,17 @@ call $~lib/builtins/abort unreachable end + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -6735,17 +6610,17 @@ call $~lib/builtins/abort unreachable end + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 274 @@ -6763,17 +6638,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 984 @@ -6789,17 +6664,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 12 @@ -6815,17 +6690,17 @@ local.get $0 i32.const 568 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 568 @@ -6871,17 +6746,17 @@ local.get $0 i32.const 2000 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 if @@ -6907,17 +6782,17 @@ local.get $0 i32.const -2000 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 if @@ -6945,17 +6820,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -6973,17 +6848,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCSeconds + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -7001,17 +6876,17 @@ local.get $0 i32.const 50 call $~lib/date/Date#setUTCSeconds + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -7061,17 +6936,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7089,17 +6964,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCMinutes + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7117,17 +6992,17 @@ local.get $0 i32.const 50 call $~lib/date/Date#setUTCMinutes + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7177,17 +7052,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -7205,17 +7080,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCHours + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -7233,17 +7108,17 @@ local.get $0 i32.const 2 call $~lib/date/Date#setUTCHours + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -7398,17 +7273,17 @@ call $~lib/builtins/abort unreachable end + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7423,17 +7298,17 @@ call $~lib/builtins/abort unreachable end + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -7448,17 +7323,17 @@ call $~lib/builtins/abort unreachable end + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 274 @@ -7609,65 +7484,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467763200000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 3 i32.ne @@ -7682,65 +7557,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467763199999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=8 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 2 i32.ne @@ -7755,65 +7630,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467849599999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=12 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 3 i32.ne @@ -7828,65 +7703,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467849600000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=16 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 4 i32.ne @@ -7901,65 +7776,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468022400000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=20 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 6 i32.ne @@ -7974,65 +7849,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468022399999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=24 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 5 i32.ne @@ -8047,65 +7922,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468108799999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 - i32.const 399 - i32.sub local.get $3 + local.get $3 + i32.const 399 + i32.sub + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 6 i32.ne @@ -8120,65 +7995,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468108800000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add if i32.const 0 @@ -9225,14 +9100,14 @@ global.get $~lib/memory/__stack_pointer i64.const 8639999999999999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer i64.const -8639999999999999 call $~lib/date/Date#constructor - local.tee $0 + local.tee $2 i32.store offset=12 - local.get $0 + local.get $2 i32.load i32.const -271821 i32.ne @@ -9244,7 +9119,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load offset=4 i32.const 4 i32.ne @@ -9256,7 +9131,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load offset=8 i32.const 20 i32.ne @@ -9268,17 +9143,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 86400000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -9291,17 +9166,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 3600000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -9314,17 +9189,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 60000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -9337,17 +9212,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 1000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1 @@ -9360,17 +9235,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/date/Date#toISOString - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer local.tee $3 - local.get $2 + local.get $0 i32.store offset=28 local.get $3 i32.const 7360 i32.store offset=32 - local.get $2 + local.get $0 i32.const 7360 call $~lib/string/String.__eq i32.eqz @@ -9382,7 +9257,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer @@ -9522,7 +9397,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 i32.const 1868 i32.load i32.const 1 @@ -9530,6 +9404,7 @@ i32.const 1 i32.shl local.tee $2 + i32.eqz local.get $0 i32.const 20 i32.sub @@ -9538,14 +9413,13 @@ i32.shr_u i32.const 1 i32.shl - local.tee $6 + local.tee $4 local.get $1 i32.const 1 i32.shl local.tee $1 i32.gt_u - select - i32.eqz + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9558,28 +9432,32 @@ local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store local.get $2 local.get $1 - local.get $6 + local.get $4 i32.sub - local.tee $4 + local.tee $1 i32.lt_u if local.get $2 - local.get $4 + local.get $1 i32.const 2 i32.sub local.get $2 i32.div_u + local.tee $6 i32.mul - local.tee $1 local.set $7 + local.get $2 + local.get $6 + i32.mul + local.set $6 loop $while-continue|0 - local.get $1 - local.get $5 - i32.gt_u + local.get $3 + local.get $6 + i32.lt_u if local.get $3 local.get $5 @@ -9588,37 +9466,37 @@ local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $5 + local.get $3 i32.add - local.set $5 + local.set $3 br $while-continue|0 end end - local.get $3 + local.get $5 local.get $7 i32.add i32.const 1872 - local.get $4 + local.get $1 local.get $7 i32.sub call $~lib/memory/memory.copy else - local.get $3 + local.get $5 i32.const 1872 - local.get $4 + local.get $1 call $~lib/memory/memory.copy end - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.add local.get $0 - local.get $6 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -9688,10 +9566,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $4 i32.sub - local.tee $2 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -9705,7 +9583,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -9718,7 +9596,7 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 @@ -9727,7 +9605,7 @@ local.get $0 local.get $4 i32.add - local.get $2 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9762,35 +9640,38 @@ local.get $0 i32.const 2 i32.shl - local.tee $3 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 - local.get $2 + local.tee $2 + local.get $3 i32.store - local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + if + local.get $2 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 + local.get $3 i32.store offset=4 + local.get $2 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -9849,4 +9730,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + 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 + ) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index ab4c2824a1..8125ecd31f 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -5396,14 +5396,17 @@ i32.or i32.const 160 i32.eq - local.get $0 - i32.const 9 - i32.sub - i32.const 13 - i32.const 9 - i32.sub - i32.le_u - i32.or + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u + end return end local.get $0 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 1123142e58..3c1f5f2528 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -60,13 +60,13 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1616 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -133,7 +133,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -156,7 +156,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -166,15 +166,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -239,30 +239,6 @@ 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) @@ -299,11 +275,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -315,28 +290,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -348,19 +320,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -385,9 +357,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -395,17 +367,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -533,7 +505,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -544,7 +516,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -564,44 +536,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -611,7 +582,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -621,20 +592,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -662,7 +633,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -689,15 +660,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -709,15 +677,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -738,6 +706,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -747,7 +718,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -784,8 +755,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -944,7 +915,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1069,7 +1044,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1079,7 +1054,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1092,14 +1067,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1124,56 +1098,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1321,14 +1292,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1338,17 +1309,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1364,22 +1335,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1390,11 +1361,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1489,10 +1460,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1500,7 +1467,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1511,54 +1481,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1566,16 +1532,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1584,7 +1550,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1592,9 +1558,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1605,11 +1571,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1620,12 +1586,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1638,89 +1604,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1728,7 +1694,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1736,61 +1702,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1826,7 +1737,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -1834,7 +1745,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1842,33 +1753,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load8_s local.tee $8 i32.store8 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -1883,29 +1794,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -1918,30 +1829,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -1954,76 +1871,77 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + 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 + 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 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + drop + local.get $2 + i32.const -2 i32.and local.set $0 br $while-continue|0 end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -2049,17 +1967,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2205,19 +2123,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2232,7 +2150,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2243,10 +2161,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2254,10 +2172,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2268,7 +2186,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2298,17 +2216,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2323,7 +2241,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2334,10 +2252,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2345,10 +2263,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2359,7 +2277,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2385,17 +2303,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2410,7 +2328,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2421,10 +2339,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2432,10 +2350,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2446,7 +2364,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2483,131 +2401,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2624,59 +2520,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2693,7 +2583,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2704,11 +2594,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2722,17 +2612,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2746,312 +2636,313 @@ i32.store8 end ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/itcms/__renew (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 $0 - i32.load offset=8 - local.tee $8 - local.get $2 - i32.shr_u + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub local.get $1 - i32.lt_u + i32.ge_u if - i32.const 1073741820 local.get $2 - i32.shr_u local.get $1 - i32.lt_u + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u if - i32.const 1456 - i32.const 1728 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 end local.get $0 - i32.load - local.set $4 - local.get $1 - i32.const 8 local.get $1 - i32.const 8 i32.gt_u - select - local.get $2 - i32.shl - local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $3 - if (result i32) - local.get $8 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - else - local.get $1 - end - local.tee $6 - local.get $4 - local.tee $2 - i32.const 20 - i32.sub - local.tee $1 - i32.load - i32.const -4 + if + local.get $0 + i32.const 7 i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $1 - local.get $6 - i32.store offset=16 - local.get $2 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $6 - local.get $1 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $9 - local.set $3 - local.get $6 local.get $1 - i32.load offset=16 - local.tee $1 - local.get $1 - local.get $6 - i32.gt_u - select - local.set $7 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $2 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $3 - i32.sub - local.get $7 - i32.sub - i32.const 0 - local.get $7 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $3 - i32.gt_u - if + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 local.get $1 i32.const 7 i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq if - loop $while-continue|0 - local.get $3 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $1 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 end - loop $while-continue|2 - local.get $7 - if - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 end - else + end + end + loop $while-continue|2 + local.get $5 + if local.get $1 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $3 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end - loop $while-continue|5 - local.get $7 - if - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 end end end - local.get $9 + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end - local.tee $1 - local.get $8 + end + local.get $4 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=8 + local.tee $4 + local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1073741820 + local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1456 + i32.const 1728 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + local.get $2 + i32.shl + local.set $1 + local.get $0 + i32.load + local.tee $2 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + i32.const 1073741820 + local.get $3 + i32.const 1073741820 + i32.lt_u + select + local.tee $3 + local.get $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.set $1 + end + local.get $1 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $4 i32.add - local.get $6 - local.get $8 + local.get $1 + local.get $4 i32.sub call $~lib/memory/memory.fill - local.get $1 local.get $2 + local.get $3 i32.ne if local.get $0 - local.get $1 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $3 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 - local.get $6 + local.get $1 i32.store offset=8 end ) @@ -3187,7 +3078,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -3195,7 +3086,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -3203,33 +3094,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load local.tee $8 i32.store local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -3243,29 +3134,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -3278,30 +3169,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -3315,50 +3212,51 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -3375,6 +3273,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -3383,9 +3282,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -3406,14 +3304,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -3433,7 +3331,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -3444,9 +3342,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -3455,9 +3356,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -3486,89 +3390,96 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i64.const 0 i64.store - local.get $4 + local.get $5 i64.const 0 i64.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store - local.get $5 + local.get $3 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 3 i32.store offset=4 - local.get $5 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.store offset=12 - local.get $5 + local.get $3 i32.const 0 i32.store offset=16 - local.get $5 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 local.get $5 + local.get $3 i32.store loop $for-loop|1 - local.get $2 + local.get $4 i32.extend8_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -3578,62 +3489,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 if i32.const 0 i32.const 1568 @@ -3642,19 +3553,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend8_s - local.tee $4 + local.tee $5 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761394 @@ -3663,62 +3574,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -3728,10 +3639,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend8_s i32.const 10 i32.add @@ -3744,14 +3655,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|1 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -3764,18 +3675,18 @@ unreachable end i32.const 0 - local.set $2 + local.set $4 loop $for-loop|3 - local.get $2 + local.get $4 i32.extend8_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -3785,62 +3696,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -3850,10 +3761,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend8_s i32.const 10 i32.add @@ -3866,19 +3777,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend8_s - local.tee $4 + local.tee $5 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761394 @@ -3887,62 +3798,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -3952,10 +3863,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend8_s i32.const 20 i32.add @@ -3968,14 +3879,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|3 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -3988,60 +3899,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $3 + local.tee $4 i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 + local.set $7 local.get $3 + i32.load offset=16 + local.tee $8 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $3 i32.const 0 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $9 i32.const 1073741820 i32.gt_u if @@ -4053,61 +3962,64 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $9 i32.const 8 - local.get $4 + local.get $9 i32.const 8 i32.gt_u select - local.tee $8 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $11 i32.store offset=4 - local.get $0 - local.get $8 + local.get $11 + local.get $10 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $3 + local.get $11 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $11 + if + local.get $3 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $11 i32.store offset=4 - local.get $2 - local.get $8 + local.get $3 + local.get $10 i32.store offset=8 - local.get $2 - local.get $4 + local.get $3 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 local.get $3 - local.get $2 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $2 + local.get $8 i32.lt_s if - local.get $7 + local.get $2 i32.const 12 i32.mul - local.get $11 + local.get $7 i32.add - local.tee $4 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 local.get $1 - local.get $4 + local.get $6 i32.load8_s call $~lib/array/Array#__set local.get $1 @@ -4115,30 +4027,29 @@ i32.add local.set $1 end - local.get $7 + local.get $2 i32.const 1 i32.add - local.set $7 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $3 local.get $1 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 + local.get $3 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -4150,65 +4061,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 6 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $3 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $0 + local.tee $1 + local.get $3 i32.load offset=12 - local.get $6 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -4217,21 +4135,22 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $1 + local.get $3 i32.load offset=4 i32.add i32.load8_s - local.set $2 + local.set $5 local.get $13 - local.get $6 + local.get $1 call $~lib/array/Array#__get - local.set $12 - local.get $5 + local.set $16 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 + local.tee $6 i32.extend8_s i32.const -1028477379 i32.mul @@ -4242,23 +4161,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -4266,13 +4185,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 local.get $0 if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) @@ -4280,17 +4199,17 @@ else local.get $0 i32.load8_u - local.get $2 + local.get $6 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + br_if $__inlined_func$~lib/map/Map#find12 + local.get $2 i32.const -2 i32.and local.set $0 - br $while-continue|011 + br $while-continue|013 end end i32.const 0 @@ -4306,14 +4225,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $12 + local.get $16 i32.const 20 i32.sub - local.tee $3 + local.tee $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -4324,23 +4243,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -4348,13 +4267,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 local.get $0 if local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 i32.const 1 i32.and if (result i32) @@ -4362,17 +4281,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|014 + br $while-continue|016 end end i32.const 0 @@ -4395,14 +4314,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $14 i32.load - local.get $2 - local.tee $0 + local.get $5 i32.extend8_s i32.const -1028477379 i32.mul @@ -4412,79 +4330,80 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $8 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 + loop $while-continue|017 + local.get $2 if - local.get $7 + local.get $2 + local.tee $0 i32.load offset=4 - local.tee $8 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 - i32.load8_u local.get $0 + i32.load8_u + local.get $6 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $2 i32.const -2 i32.and - local.set $7 - br $while-continue|015 + local.set $2 + br $while-continue|017 end end i32.const 0 - local.set $7 + local.set $0 end - local.get $7 + local.get $0 if - local.get $7 - local.get $2 + local.get $0 + local.get $6 i32.store8 offset=1 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -4492,17 +4411,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4510,20 +4429,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $7 + local.get $10 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -4531,45 +4450,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $9 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $7 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 + local.set $12 + local.get $2 local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + loop $while-continue|018 + local.get $7 + local.get $12 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $8 + local.get $7 i32.load8_s - local.tee $9 + local.tee $17 i32.store8 local.get $0 - local.get $8 + local.get $7 i32.load8_s offset=1 i32.store8 offset=1 local.get $0 - local.get $9 + local.get $17 i32.extend8_s i32.const -1028477379 i32.mul @@ -4579,35 +4498,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $10 i32.and i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 + local.get $17 local.get $0 i32.store local.get $0 @@ -4615,33 +4534,39 @@ i32.add local.set $0 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $7 + br $while-continue|018 end end - local.get $4 - local.get $10 + local.get $14 + local.get $11 i32.store - local.get $4 + local.get $11 + if + local.get $14 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 i32.store offset=4 - local.get $4 - local.get $3 + local.get $14 + local.get $2 i32.store offset=8 - local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $9 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -4650,40 +4575,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 local.tee $0 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $2 i32.const 3 i32.shl local.get $0 i32.add local.tee $0 - local.get $2 + local.get $5 i32.store8 local.get $0 - local.get $2 + local.get $6 i32.store8 offset=1 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $4 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $8 i32.and i32.const 2 i32.shl @@ -4699,21 +4624,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -4725,7 +4650,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -4738,18 +4663,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.extend8_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -4759,62 +4684,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 - loop $while-continue|019 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|019 + local.set $5 + br $while-continue|021 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -4824,10 +4749,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.extend8_s i32.const 20 i32.add @@ -4840,14 +4765,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -4857,62 +4782,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|022 + local.set $5 + br $while-continue|024 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -4921,14 +4846,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -4941,18 +4866,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.extend8_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -4962,62 +4887,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|025 + local.set $5 + br $while-continue|027 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -5026,19 +4951,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $4 + local.get $0 + local.get $0 i32.extend8_s - local.tee $2 + local.tee $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761394 @@ -5047,62 +4972,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|028 + local.set $5 + br $while-continue|030 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -5112,14 +5037,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -5129,62 +5054,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|031 + local.set $5 + br $while-continue|033 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -5193,14 +5118,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -5212,9 +5137,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 call $~lib/map/Map#clear - local.get $5 + local.get $4 i32.load offset=20 if i32.const 0 @@ -5272,7 +5197,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -5280,7 +5205,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -5288,37 +5213,39 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load8_u local.tee $8 i32.store8 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 local.get $8 + i32.const 255 + i32.and i32.const -1028477379 i32.mul i32.const 374761394 @@ -5328,29 +5255,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -5363,30 +5290,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -5399,50 +5332,51 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -5459,6 +5393,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -5467,9 +5402,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -5485,51 +5419,52 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -5546,6 +5481,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -5554,9 +5490,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -5577,14 +5512,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -5604,7 +5539,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -5626,15 +5561,16 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $4 i64.const 0 @@ -5652,7 +5588,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $5 i32.const 0 @@ -5661,34 +5597,40 @@ i32.const 24 i32.const 8 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $11 i32.store - local.get $5 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $5 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store offset=8 local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $5 + local.get $11 i32.const 0 i32.store offset=16 - local.get $5 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -5696,7 +5638,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $4 - local.get $5 + local.get $11 i32.store loop $for-loop|1 local.get $2 @@ -5705,77 +5647,78 @@ i32.const 100 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 end - local.get $4 if i32.const 0 i32.const 1568 @@ -5784,84 +5727,86 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 local.get $2 i32.const 255 i32.and - local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - 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 - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 + block $__inlined_func$~lib/map/Map#find1 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -5871,7 +5816,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -5895,7 +5840,7 @@ br $for-loop|1 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -5913,80 +5858,81 @@ local.get $2 i32.const 255 i32.and - i32.const 100 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 + i32.const 100 + i32.lt_u + if + block $__inlined_func$~lib/map/Map#find4 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -5996,7 +5942,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -6013,84 +5959,86 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 local.get $2 i32.const 255 i32.and - local.tee $4 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - 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 - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 + block $__inlined_func$~lib/map/Map#find7 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -6100,7 +6048,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -6124,7 +6072,7 @@ br $for-loop|3 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -6145,52 +6093,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $5 + local.get $11 i32.load offset=8 - local.set $11 - local.get $5 + local.set $5 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 + local.tee $6 + local.set $7 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $8 i64.const 0 i64.store - local.get $2 + local.get $8 i32.const 16 i32.const 9 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $12 i32.store - local.get $2 + local.get $12 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $12 i32.const 0 i32.store offset=4 - local.get $2 + local.get $12 i32.const 0 i32.store offset=8 - local.get $2 + local.get $12 i32.const 0 i32.store offset=12 - local.get $4 + local.get $7 i32.const 1073741820 i32.gt_u if @@ -6202,92 +6147,94 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 8 - local.get $4 + local.get $7 i32.const 8 i32.gt_u select local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $9 i32.store offset=4 - local.get $0 + local.get $9 local.get $8 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $12 + local.get $9 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $9 + if + local.get $12 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $9 i32.store offset=4 - local.get $2 + local.get $12 local.get $8 i32.store offset=8 - local.get $2 - local.get $4 + local.get $12 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $2 + local.get $12 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $1 + local.get $6 i32.lt_s if - local.get $7 + local.get $1 i32.const 12 i32.mul - local.get $11 + local.get $5 i32.add - local.tee $4 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if + local.get $12 + local.get $3 local.get $2 - local.get $1 - local.get $4 i32.load8_u call $~lib/array/Array#__set - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 end - local.get $7 + local.get $1 i32.const 1 i32.add - local.set $7 + local.set $1 br $for-loop|0 end end - local.get $2 - local.get $1 + local.get $12 + local.get $3 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 - local.get $1 + local.get $12 + 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 $2 - local.tee $1 + local.get $12 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $11 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -6299,64 +6246,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 10 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.le_u if i32.const 1248 @@ -6366,85 +6319,88 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $1 + local.get $0 + local.get $12 i32.load offset=4 i32.add i32.load8_u local.set $2 local.get $13 - local.get $6 - call $~lib/array/Array#__get - local.set $12 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761394 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find10 + call $~lib/array/Array#__get + local.set $16 + block $__inlined_func$~lib/map/Map#find10 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $2 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -6454,62 +6410,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $12 - i32.const 20 - i32.sub - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 + block $__inlined_func$~lib/map/Map#find13 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $16 + i32.const 20 + i32.sub + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|014 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=8 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load8_u local.get $3 i32.const 255 @@ -6517,17 +6474,16 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -6544,14 +6500,15 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $2 + local.set $3 + local.get $14 i32.load local.get $2 - local.tee $0 i32.const -1028477379 i32.mul i32.const 374761394 @@ -6560,79 +6517,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $6 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $1 block $__inlined_func$~lib/map/Map#find loop $while-continue|015 - local.get $7 + local.get $1 if - local.get $7 + local.get $1 i32.load offset=4 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 + local.get $1 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $4 i32.const -2 i32.and - local.set $7 + local.set $1 br $while-continue|015 end end i32.const 0 - local.set $7 + local.set $1 end - local.get $7 + local.get $1 if - local.get $7 - local.get $2 + local.get $1 + local.get $3 i32.store8 offset=1 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -6640,17 +6597,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -6658,66 +6615,66 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 - local.get $7 + local.get $1 + local.get $8 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $5 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 - local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + local.set $10 + local.get $4 + local.set $1 + loop $while-continue|0216 + local.get $5 + local.get $10 i32.ne if - local.get $8 + local.get $5 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load8_u - local.tee $9 + local.tee $17 i32.store8 - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load8_u offset=1 i32.store8 offset=1 - local.get $0 - local.get $9 + local.get $1 + local.get $17 i32.const -1028477379 i32.mul i32.const 374761394 @@ -6726,69 +6683,75 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $8 i32.and i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 - local.get $0 + local.get $17 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 8 i32.add - local.set $0 + local.set $1 end - local.get $8 + local.get $5 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $5 + br $while-continue|0216 end end - local.get $4 - local.get $10 + local.get $14 + local.get $9 i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 + local.get $9 + if + local.get $14 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $8 i32.store offset=4 + local.get $14 local.get $4 - local.get $3 i32.store offset=8 local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + if + local.get $14 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $7 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -6797,40 +6760,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add - local.tee $0 + local.tee $1 local.get $2 i32.store8 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.store8 offset=1 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $0 - local.get $4 + local.get $1 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $6 i32.and i32.const 2 i32.shl @@ -6839,28 +6802,28 @@ i32.load i32.store offset=4 local.get $2 - local.get $0 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 call $~lib/map/Map#set - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -6872,7 +6835,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -6885,61 +6848,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 + block $__inlined_func$~lib/map/Map#find18 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|019 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -6947,13 +6912,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -6961,9 +6927,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -6973,10 +6937,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.const 255 i32.and i32.const 20 @@ -6990,56 +6954,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 + block $__inlined_func$~lib/map/Map#find21 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|022 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7047,13 +7013,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7061,9 +7028,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -7072,14 +7037,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -7092,61 +7057,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 + block $__inlined_func$~lib/map/Map#find24 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|025 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7154,13 +7121,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7168,9 +7136,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -7179,60 +7145,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $11 + local.get $0 + local.get $0 i32.const 255 i32.and - local.tee $2 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 + block $__inlined_func$~lib/map/Map#find27 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|028 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7240,13 +7209,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7254,9 +7224,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -7266,56 +7234,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 + block $__inlined_func$~lib/map/Map#find30 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|031 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7323,13 +7293,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7337,9 +7308,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -7348,14 +7317,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -7367,9 +7336,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 call $~lib/map/Map#clear - local.get $5 + local.get $11 i32.load offset=20 if i32.const 0 @@ -7427,7 +7396,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -7435,7 +7404,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -7443,33 +7412,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load16_s local.tee $8 i32.store16 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -7484,29 +7453,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -7519,30 +7488,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -7555,49 +7530,50 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + 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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -7614,6 +7590,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -7622,9 +7599,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -7679,50 +7655,51 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -7739,6 +7716,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -7747,9 +7725,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -7770,14 +7747,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -7797,7 +7774,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -7819,89 +7796,96 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i64.const 0 i64.store - local.get $4 + local.get $5 i64.const 0 i64.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store - local.get $5 + local.get $3 i32.const 24 i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 3 i32.store offset=4 - local.get $5 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.store offset=12 - local.get $5 + local.get $3 i32.const 0 i32.store offset=16 - local.get $5 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 local.get $5 + local.get $3 i32.store loop $for-loop|1 - local.get $2 + local.get $4 i32.extend16_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7911,62 +7895,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 if i32.const 0 i32.const 1568 @@ -7975,19 +7959,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend16_s - local.tee $4 + local.tee $5 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761395 @@ -7996,62 +7980,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -8061,10 +8045,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend16_s i32.const 10 i32.add @@ -8077,14 +8061,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|1 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -8097,18 +8081,18 @@ unreachable end i32.const 0 - local.set $2 + local.set $4 loop $for-loop|3 - local.get $2 + local.get $4 i32.extend16_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -8118,62 +8102,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -8183,10 +8167,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend16_s i32.const 10 i32.add @@ -8199,19 +8183,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend16_s - local.tee $4 + local.tee $5 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761395 @@ -8220,62 +8204,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -8285,10 +8269,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend16_s i32.const 20 i32.add @@ -8301,14 +8285,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|3 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -8321,60 +8305,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $3 + local.tee $4 i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 + local.set $7 local.get $3 + i32.load offset=16 + local.tee $8 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $3 i32.const 0 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $9 i32.const 536870910 i32.gt_u if @@ -8386,63 +8368,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $9 i32.const 8 - local.get $4 + local.get $9 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $8 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $11 i32.store offset=4 - local.get $0 - local.get $8 + local.get $11 + local.get $10 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $3 + local.get $11 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $11 + if + local.get $3 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $11 i32.store offset=4 - local.get $2 - local.get $8 + local.get $3 + local.get $10 i32.store offset=8 - local.get $2 - local.get $4 + local.get $3 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 local.get $3 - local.get $2 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $2 + local.get $8 i32.lt_s if - local.get $7 + local.get $2 i32.const 12 i32.mul - local.get $11 + local.get $7 i32.add - local.tee $4 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 local.get $1 - local.get $4 + local.get $6 i32.load16_s call $~lib/array/Array#__set local.get $1 @@ -8450,30 +8435,29 @@ i32.add local.set $1 end - local.get $7 + local.get $2 i32.const 1 i32.add - local.set $7 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $3 local.get $1 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 + local.get $3 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -8485,65 +8469,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 13 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $3 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $0 + local.tee $1 + local.get $3 i32.load offset=12 - local.get $6 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -8552,23 +8543,24 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.load offset=4 - local.get $6 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s - local.set $2 + local.set $5 local.get $13 - local.get $6 + local.get $1 call $~lib/array/Array#__get - local.set $12 - local.get $5 + local.set $16 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 + local.tee $6 i32.extend16_s i32.const -1028477379 i32.mul @@ -8579,23 +8571,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -8603,13 +8595,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 local.get $0 if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) @@ -8617,17 +8609,17 @@ else local.get $0 i32.load16_u - local.get $2 + local.get $6 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + br_if $__inlined_func$~lib/map/Map#find12 + local.get $2 i32.const -2 i32.and local.set $0 - br $while-continue|011 + br $while-continue|013 end end i32.const 0 @@ -8643,14 +8635,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $12 + local.get $16 i32.const 20 i32.sub - local.tee $3 + local.tee $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -8661,23 +8653,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -8685,13 +8677,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 local.get $0 if local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 i32.const 1 i32.and if (result i32) @@ -8699,17 +8691,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|014 + br $while-continue|016 end end i32.const 0 @@ -8732,14 +8724,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $14 i32.load - local.get $2 - local.tee $0 + local.get $5 i32.extend16_s i32.const -1028477379 i32.mul @@ -8749,79 +8740,80 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $8 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 + loop $while-continue|017 + local.get $2 if - local.get $7 + local.get $2 + local.tee $0 i32.load offset=4 - local.tee $8 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 - i32.load16_u local.get $0 + i32.load16_u + local.get $6 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $2 i32.const -2 i32.and - local.set $7 - br $while-continue|015 + local.set $2 + br $while-continue|017 end end i32.const 0 - local.set $7 + local.set $0 end - local.get $7 + local.get $0 if - local.get $7 - local.get $2 + local.get $0 + local.get $6 i32.store16 offset=2 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -8829,17 +8821,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8847,20 +8839,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $7 + local.get $10 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -8868,45 +8860,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $9 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $7 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 + local.set $12 + local.get $2 local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + loop $while-continue|018 + local.get $7 + local.get $12 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $8 + local.get $7 i32.load16_s - local.tee $9 + local.tee $17 i32.store16 local.get $0 - local.get $8 + local.get $7 i32.load16_s offset=2 i32.store16 offset=2 local.get $0 - local.get $9 + local.get $17 i32.extend16_s i32.const -1028477379 i32.mul @@ -8916,35 +8908,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $10 i32.and i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 + local.get $17 local.get $0 i32.store local.get $0 @@ -8952,33 +8944,39 @@ i32.add local.set $0 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $7 + br $while-continue|018 end end - local.get $4 - local.get $10 + local.get $14 + local.get $11 i32.store - local.get $4 + local.get $11 + if + local.get $14 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 i32.store offset=4 - local.get $4 - local.get $3 + local.get $14 + local.get $2 i32.store offset=8 - local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $9 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -8987,40 +8985,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 local.tee $0 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $2 i32.const 3 i32.shl local.get $0 i32.add local.tee $0 - local.get $2 + local.get $5 i32.store16 local.get $0 - local.get $2 + local.get $6 i32.store16 offset=2 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $4 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $8 i32.and i32.const 2 i32.shl @@ -9036,21 +9034,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -9062,7 +9060,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -9075,18 +9073,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.extend16_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9096,62 +9094,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 - loop $while-continue|019 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|019 + local.set $5 + br $while-continue|021 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -9161,10 +9159,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.extend16_s i32.const 20 i32.add @@ -9177,14 +9175,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9194,62 +9192,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|022 + local.set $5 + br $while-continue|024 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -9258,14 +9256,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -9278,18 +9276,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.extend16_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9299,62 +9297,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|025 + local.set $5 + br $while-continue|027 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -9363,19 +9361,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $4 + local.get $0 + local.get $0 i32.extend16_s - local.tee $2 + local.tee $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761395 @@ -9384,62 +9382,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|028 + local.set $5 + br $while-continue|030 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -9449,14 +9447,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9466,62 +9464,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|031 + local.set $5 + br $while-continue|033 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -9530,14 +9528,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -9549,9 +9547,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 call $~lib/map/Map#clear - local.get $5 + local.get $4 i32.load offset=20 if i32.const 0 @@ -9609,7 +9607,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -9617,7 +9615,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -9625,37 +9623,39 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load16_u local.tee $8 i32.store16 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 local.get $8 + i32.const 65535 + i32.and i32.const -1028477379 i32.mul i32.const 374761395 @@ -9665,29 +9665,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -9700,30 +9700,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -9736,50 +9742,51 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -9796,6 +9803,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -9804,9 +9812,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -9822,51 +9829,52 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -9883,6 +9891,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -9891,9 +9900,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -9914,14 +9922,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -9941,7 +9949,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -9963,15 +9971,16 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $4 i64.const 0 @@ -9989,7 +9998,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $5 i32.const 0 @@ -9998,34 +10007,40 @@ i32.const 24 i32.const 14 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $11 i32.store - local.get $5 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $5 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store offset=8 local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $5 + local.get $11 i32.const 0 i32.store offset=16 - local.get $5 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -10033,7 +10048,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $4 - local.get $5 + local.get $11 i32.store loop $for-loop|1 local.get $2 @@ -10042,77 +10057,78 @@ i32.const 100 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 end - local.get $4 if i32.const 0 i32.const 1568 @@ -10121,84 +10137,86 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 local.get $2 i32.const 65535 i32.and - local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - 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 - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 + block $__inlined_func$~lib/map/Map#find1 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -10208,7 +10226,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -10232,7 +10250,7 @@ br $for-loop|1 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -10253,77 +10271,78 @@ i32.const 100 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 + block $__inlined_func$~lib/map/Map#find4 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -10333,7 +10352,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -10342,92 +10361,94 @@ i32.const 10 i32.add i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - local.tee $4 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - 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 + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $2 + local.get $2 + i32.const 65535 i32.and - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 + call $~lib/map/Map#set + block $__inlined_func$~lib/map/Map#find7 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -10437,7 +10458,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -10461,7 +10482,7 @@ br $for-loop|3 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -10482,52 +10503,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $5 + local.get $11 i32.load offset=8 - local.set $11 - local.get $5 + local.set $5 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 + local.tee $6 + local.set $7 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $8 i64.const 0 i64.store - local.get $2 + local.get $8 i32.const 16 i32.const 15 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $12 i32.store - local.get $2 + local.get $12 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $12 i32.const 0 i32.store offset=4 - local.get $2 + local.get $12 i32.const 0 i32.store offset=8 - local.get $2 + local.get $12 i32.const 0 i32.store offset=12 - local.get $4 + local.get $7 i32.const 536870910 i32.gt_u if @@ -10539,9 +10557,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 8 - local.get $4 + local.get $7 i32.const 8 i32.gt_u select @@ -10550,83 +10568,85 @@ local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $9 i32.store offset=4 - local.get $0 + local.get $9 local.get $8 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $12 + local.get $9 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $9 + if + local.get $12 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $9 i32.store offset=4 - local.get $2 + local.get $12 local.get $8 i32.store offset=8 - local.get $2 - local.get $4 + local.get $12 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $2 + local.get $12 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $1 + local.get $6 i32.lt_s if - local.get $7 + local.get $1 i32.const 12 i32.mul - local.get $11 + local.get $5 i32.add - local.tee $4 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if + local.get $12 + local.get $3 local.get $2 - local.get $1 - local.get $4 i32.load16_u call $~lib/array/Array#__set - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 end - local.get $7 + local.get $1 i32.const 1 i32.add - local.set $7 + local.set $1 br $for-loop|0 end end - local.get $2 - local.get $1 + local.get $12 + local.get $3 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 - local.get $1 + local.get $12 + 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 $2 - local.tee $1 + local.get $12 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $11 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -10638,64 +10658,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 16 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.le_u if i32.const 1248 @@ -10705,87 +10731,90 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $12 i32.load offset=4 - local.get $6 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_u local.set $2 local.get $13 - local.get $6 - call $~lib/array/Array#__get - local.set $12 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761395 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find10 + call $~lib/array/Array#__get + local.set $16 + block $__inlined_func$~lib/map/Map#find10 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $2 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -10795,62 +10824,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $12 - i32.const 20 - i32.sub - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 + block $__inlined_func$~lib/map/Map#find13 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $16 + i32.const 20 + i32.sub + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|014 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=8 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load16_u local.get $3 i32.const 65535 @@ -10858,17 +10888,16 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -10885,14 +10914,15 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $2 + local.set $3 + local.get $14 i32.load local.get $2 - local.tee $0 i32.const -1028477379 i32.mul i32.const 374761395 @@ -10901,79 +10931,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $6 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $1 block $__inlined_func$~lib/map/Map#find loop $while-continue|015 - local.get $7 + local.get $1 if - local.get $7 + local.get $1 i32.load offset=4 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 + local.get $1 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $4 i32.const -2 i32.and - local.set $7 + local.set $1 br $while-continue|015 end end i32.const 0 - local.set $7 + local.set $1 end - local.get $7 + local.get $1 if - local.get $7 - local.get $2 + local.get $1 + local.get $3 i32.store16 offset=2 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -10981,17 +11011,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -10999,66 +11029,66 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 - local.get $7 + local.get $1 + local.get $8 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $5 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 - local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + local.set $10 + local.get $4 + local.set $1 + loop $while-continue|0216 + local.get $5 + local.get $10 i32.ne if - local.get $8 + local.get $5 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load16_u - local.tee $9 + local.tee $17 i32.store16 - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load16_u offset=2 i32.store16 offset=2 - local.get $0 - local.get $9 + local.get $1 + local.get $17 i32.const -1028477379 i32.mul i32.const 374761395 @@ -11067,69 +11097,75 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $8 i32.and i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 - local.get $0 + local.get $17 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 8 i32.add - local.set $0 + local.set $1 end - local.get $8 + local.get $5 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $5 + br $while-continue|0216 end end - local.get $4 - local.get $10 + local.get $14 + local.get $9 i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 + local.get $9 + if + local.get $14 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $8 i32.store offset=4 + local.get $14 local.get $4 - local.get $3 i32.store offset=8 local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + if + local.get $14 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $7 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -11138,40 +11174,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add - local.tee $0 + local.tee $1 local.get $2 i32.store16 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.store16 offset=2 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $0 - local.get $4 + local.get $1 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $6 i32.and i32.const 2 i32.shl @@ -11180,28 +11216,28 @@ i32.load i32.store offset=4 local.get $2 - local.get $0 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 call $~lib/map/Map#set - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -11213,7 +11249,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -11226,61 +11262,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 + block $__inlined_func$~lib/map/Map#find18 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|019 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11288,13 +11326,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11302,9 +11341,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -11314,10 +11351,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.const 65535 i32.and i32.const 20 @@ -11331,56 +11368,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 + block $__inlined_func$~lib/map/Map#find21 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|022 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11388,13 +11427,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11402,9 +11442,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -11413,14 +11451,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -11433,61 +11471,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 + block $__inlined_func$~lib/map/Map#find24 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|025 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11495,13 +11535,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11509,9 +11550,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -11520,60 +11559,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $11 + local.get $0 + local.get $0 i32.const 65535 i32.and - local.tee $2 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 + block $__inlined_func$~lib/map/Map#find27 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|028 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11581,13 +11623,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11595,9 +11638,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -11607,56 +11648,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 + block $__inlined_func$~lib/map/Map#find30 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|031 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11664,13 +11707,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11678,9 +11722,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -11689,14 +11731,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -11708,9 +11750,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 call $~lib/map/Map#clear - local.get $5 + local.get $11 i32.load offset=20 if i32.const 0 @@ -11735,48 +11777,49 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -11791,6 +11834,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -11799,9 +11843,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -11817,49 +11860,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -11874,6 +11918,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -11882,9 +11927,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -11905,14 +11949,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -11932,7 +11976,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -11969,18 +12013,18 @@ i32.store offset=16 local.get $2 call $~lib/map/Map#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $0 + local.get $3 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11989,60 +12033,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 if i32.const 0 i32.const 1568 @@ -12051,17 +12095,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - local.get $0 + local.get $4 + local.get $3 + local.get $3 i32.const 10 i32.add call $~lib/map/Map#set - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12070,60 +12114,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.eqz if i32.const 0 @@ -12133,10 +12177,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $0 + local.get $3 i32.const 10 i32.add i32.ne @@ -12148,14 +12192,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -12168,17 +12212,17 @@ unreachable end i32.const 0 - local.set $0 + local.set $3 loop $for-loop|1 - local.get $0 + local.get $3 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12187,60 +12231,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.eqz if i32.const 0 @@ -12250,10 +12294,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $0 + local.get $3 i32.const 10 i32.add i32.ne @@ -12265,17 +12309,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - local.get $0 + local.get $4 + local.get $3 + local.get $3 i32.const 20 i32.add call $~lib/map/Map#set - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12284,60 +12328,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.eqz if i32.const 0 @@ -12347,10 +12391,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $0 + local.get $3 i32.const 20 i32.add i32.ne @@ -12362,14 +12406,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -12382,10 +12426,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -12394,38 +12436,38 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $5 - local.get $1 + local.set $7 local.get $2 + local.get $4 i32.load offset=16 - local.tee $8 + local.tee $2 call $~lib/array/Array#constructor - local.tee $1 + local.tee $3 i32.store loop $for-loop|01 - local.get $3 - local.get $8 - i32.lt_s + local.get $2 + local.get $5 + i32.gt_s if - local.get $3 + local.get $5 i32.const 12 i32.mul - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $6 + local.get $8 i32.load call $~lib/array/Array#__set local.get $0 @@ -12433,59 +12475,59 @@ i32.add local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|01 end end - local.get $1 + local.get $3 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 call $~lib/map/Map#values - local.tee $9 + local.tee $5 i32.store offset=8 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $7 + local.tee $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $5 + local.tee $7 i32.store offset=16 loop $for-loop|2 - local.get $1 + local.get $3 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if + local.get $3 local.get $1 - local.get $4 - call $~lib/array/Array#__get - local.set $0 - local.get $9 - local.get $4 call $~lib/array/Array#__get local.set $8 - local.get $2 + local.get $5 + local.get $1 + call $~lib/array/Array#__get + local.set $9 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $8 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12494,60 +12536,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=8 - local.tee $6 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $8 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $6 + local.get $0 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 i32.eqz if i32.const 0 @@ -12557,14 +12599,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $8 + local.get $9 i32.const 20 i32.sub - local.tee $6 + local.tee $10 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12573,60 +12615,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/map/Map#find13 loop $while-continue|014 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=8 - local.tee $10 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $3 + local.get $10 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $10 + local.get $0 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 i32.eqz if i32.const 0 @@ -12636,25 +12678,25 @@ call $~lib/builtins/abort unreachable end - local.get $7 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 + local.get $6 + local.get $8 local.get $8 + call $~lib/map/Map#set + local.get $7 + local.get $9 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|2 end end - local.get $7 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -12666,7 +12708,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -12679,17 +12721,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|3 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12699,59 +12741,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find16 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -12761,10 +12803,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/map/Map#get - local.get $4 + local.get $1 i32.const 20 i32.add i32.ne @@ -12776,14 +12818,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/map/Map#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12793,59 +12835,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find19 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -12854,14 +12896,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -12874,17 +12916,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|4 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12894,59 +12936,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find22 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -12955,17 +12997,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 local.get $4 + local.get $1 + local.get $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12975,59 +13017,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find25 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -13037,14 +13079,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/map/Map#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13054,59 +13096,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find28 loop $while-continue|029 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find28 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|029 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -13115,14 +13157,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -13134,9 +13176,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/map/Map#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -13194,7 +13236,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -13202,7 +13244,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -13210,33 +13252,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load local.tee $8 i32.store local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -13250,29 +13292,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -13285,30 +13327,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -13321,48 +13369,49 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -13377,6 +13426,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -13385,9 +13435,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -13403,49 +13452,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -13460,6 +13510,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -13468,9 +13519,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -13491,14 +13541,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -13518,7 +13568,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -13540,88 +13590,95 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i64.const 0 i64.store - local.get $3 + local.get $5 i64.const 0 i64.store offset=8 - local.get $3 + local.get $5 i32.const 0 i32.store offset=16 - local.get $3 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 24 i32.const 17 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $6 i32.store - local.get $4 - local.get $1 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 3 i32.store offset=4 - local.get $4 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $6 i32.store offset=8 - local.get $4 - local.get $1 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.store offset=12 - local.get $4 + local.get $3 i32.const 0 i32.store offset=16 - local.get $4 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 local.get $3 - local.get $4 i32.store loop $for-loop|0 - local.get $0 + local.get $4 i32.const 100 i32.lt_u if - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13630,60 +13687,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 if i32.const 0 i32.const 1568 @@ -13692,17 +13749,17 @@ call $~lib/builtins/abort unreachable end + local.get $3 + local.get $4 local.get $4 - local.get $0 - local.get $0 i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13711,60 +13768,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -13774,10 +13831,10 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $4 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $4 i32.const 10 i32.add i32.ne @@ -13789,14 +13846,14 @@ 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|0 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -13809,17 +13866,17 @@ unreachable end i32.const 0 - local.set $0 + local.set $4 loop $for-loop|1 - local.get $0 + local.get $4 i32.const 100 i32.lt_u if - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13828,60 +13885,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -13891,10 +13948,10 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $4 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $4 i32.const 10 i32.add i32.ne @@ -13906,17 +13963,17 @@ call $~lib/builtins/abort unreachable end + local.get $3 + local.get $4 local.get $4 - local.get $0 - local.get $0 i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13925,60 +13982,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -13988,10 +14045,10 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $4 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $4 i32.const 20 i32.add i32.ne @@ -14003,14 +14060,14 @@ 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|1 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -14023,62 +14080,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - local.set $0 - local.get $3 + local.tee $4 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i32.const 0 i32.store - local.get $4 + local.get $3 + local.tee $4 i32.load offset=8 - local.set $11 - local.get $4 + local.set $7 + local.get $3 i32.load offset=16 - local.tee $12 - local.set $3 - local.get $2 + local.tee $8 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $3 i32.store - local.get $6 + local.get $3 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $3 i32.const 0 i32.store offset=4 - local.get $6 + local.get $3 i32.const 0 i32.store offset=8 - local.get $6 + local.get $3 i32.const 0 i32.store offset=12 - local.get $3 + local.get $9 i32.const 268435455 i32.gt_u if @@ -14090,90 +14143,93 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.const 8 - local.get $3 + local.get $9 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $7 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $11 i32.store offset=4 - local.get $1 - local.get $7 + local.get $11 + local.get $10 call $~lib/memory/memory.fill - local.get $6 - local.get $1 + local.get $3 + local.get $11 i32.store - local.get $6 - local.get $1 - call $~lib/rt/itcms/__link - local.get $6 - local.get $1 + local.get $11 + if + local.get $3 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $11 i32.store offset=4 - local.get $6 - local.get $7 + local.get $3 + local.get $10 i32.store offset=8 - local.get $6 local.get $3 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 local.get $6 + local.get $3 i32.store loop $for-loop|01 + local.get $2 local.get $8 - local.get $12 i32.lt_s if - local.get $8 + local.get $2 i32.const 12 i32.mul - local.get $11 + local.get $7 i32.add - local.tee $3 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $0 local.get $3 + local.get $1 + local.get $6 i32.load call $~lib/array/Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 end - local.get $8 + local.get $2 i32.const 1 i32.add - local.set $8 + local.set $2 br $for-loop|01 end end - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -14188,65 +14244,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.const 19 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $14 i32.store - local.get $3 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $3 + local.get $14 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $3 + local.get $14 i32.const 0 i32.store offset=16 - local.get $3 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $3 i32.load offset=12 - local.get $5 + local.get $0 i32.gt_s if - local.get $6 + local.get $0 + local.tee $1 + local.get $3 i32.load offset=12 - local.get $5 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -14255,23 +14318,24 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.load offset=4 - local.get $5 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $5 local.get $13 - local.get $5 + local.get $1 call $~lib/array/Array#__get - local.set $12 + local.set $16 local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $0 + local.get $5 + local.tee $6 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14280,36 +14344,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.const 1 @@ -14317,23 +14381,23 @@ if (result i32) i32.const 0 else + local.get $6 local.get $0 - local.get $1 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find10 + br_if $__inlined_func$~lib/map/Map#find12 local.get $2 i32.const -2 i32.and - local.set $1 - br $while-continue|011 + local.set $0 + br $while-continue|013 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -14347,7 +14411,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $12 + local.get $16 i32.const 20 i32.sub local.tee $2 @@ -14359,36 +14423,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 local.tee $7 i32.const 1 @@ -14397,22 +14461,22 @@ i32.const 0 else local.get $2 - local.get $1 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find13 + br_if $__inlined_func$~lib/map/Map#find15 local.get $7 i32.const -2 i32.and - local.set $1 - br $while-continue|014 + local.set $0 + br $while-continue|016 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -14429,14 +14493,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $14 i32.load - local.get $0 - local.tee $1 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14446,38 +14509,39 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $14 - local.get $3 + local.tee $8 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $0 + local.set $2 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $2 if - local.get $0 + local.get $2 + local.tee $0 i32.load offset=8 local.tee $2 i32.const 1 @@ -14485,17 +14549,17 @@ if (result i32) i32.const 0 else - local.get $1 + local.get $6 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find15 + br_if $__inlined_func$~lib/map/Map#find17 local.get $2 i32.const -2 i32.and - local.set $0 - br $while-continue|016 + local.set $2 + br $while-continue|018 end end i32.const 0 @@ -14504,18 +14568,18 @@ local.get $0 if local.get $0 - local.get $1 + local.get $6 i32.store offset=4 else - local.get $3 + local.get $14 i32.load offset=16 - local.get $3 + local.get $14 i32.load offset=12 i32.eq if - local.get $3 + local.get $14 i32.load offset=20 - local.get $3 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -14523,17 +14587,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $14 i32.load offset=4 else - local.get $3 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $8 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14541,20 +14605,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $8 + local.get $10 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -14562,26 +14626,26 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $9 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $3 + local.get $14 i32.load offset=8 local.tee $7 - local.get $3 + local.get $14 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $16 + local.set $12 local.get $2 local.set $0 - loop $while-continue|017 + loop $while-continue|019 local.get $7 - local.get $16 + local.get $12 i32.ne if local.get $7 @@ -14593,14 +14657,14 @@ local.get $0 local.get $7 i32.load - local.tee $9 + local.tee $17 i32.store local.get $0 local.get $7 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $9 + local.get $17 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14609,35 +14673,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $8 + local.get $10 i32.and i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=8 - local.get $9 + local.get $17 local.get $0 i32.store local.get $0 @@ -14649,29 +14713,35 @@ i32.const 12 i32.add local.set $7 - br $while-continue|017 + br $while-continue|019 end end - local.get $3 - local.get $10 + local.get $14 + local.get $11 i32.store - local.get $3 + local.get $11 + if + local.get $14 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 local.get $10 - call $~lib/rt/itcms/__link - local.get $3 - local.get $8 i32.store offset=4 - local.get $3 + local.get $14 local.get $2 i32.store offset=8 - local.get $3 local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $15 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $9 i32.store offset=12 - local.get $3 - local.get $3 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -14680,48 +14750,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $14 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $8 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $8 + local.get $2 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $1 + local.get $5 i32.store local.get $0 - local.get $1 + local.get $6 i32.store offset=4 - local.get $3 - local.get $3 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $14 i32.load - local.get $3 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $8 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -14729,21 +14799,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|2 end end - local.get $3 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -14755,7 +14825,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -14768,9 +14838,9 @@ unreachable end i32.const 0 - local.set $5 + local.set $0 loop $for-loop|3 - local.get $5 + local.get $0 i32.const 50 i32.lt_u if @@ -14778,7 +14848,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14787,36 +14857,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find19 - loop $while-continue|020 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -14824,23 +14894,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find19 + br_if $__inlined_func$~lib/map/Map#find21 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|020 + local.set $5 + br $while-continue|022 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 i32.eqz if i32.const 0 @@ -14851,9 +14921,9 @@ unreachable end local.get $4 - local.get $5 + local.get $0 call $~lib/map/Map#get - local.get $5 + local.get $0 i32.const 20 i32.add i32.ne @@ -14866,13 +14936,13 @@ unreachable end local.get $4 - local.get $5 + local.get $0 call $~lib/map/Map#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14881,36 +14951,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find22 - loop $while-continue|023 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -14918,23 +14988,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find22 + br_if $__inlined_func$~lib/map/Map#find24 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|023 + local.set $5 + br $while-continue|025 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 if i32.const 0 i32.const 1568 @@ -14943,10 +15013,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|3 end end @@ -14963,9 +15033,9 @@ unreachable end i32.const 0 - local.set $5 + local.set $0 loop $for-loop|4 - local.get $5 + local.get $0 i32.const 50 i32.lt_u if @@ -14973,7 +15043,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14982,36 +15052,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find25 - loop $while-continue|026 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -15019,23 +15089,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find25 + br_if $__inlined_func$~lib/map/Map#find27 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|026 + local.set $5 + br $while-continue|028 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 if i32.const 0 i32.const 1568 @@ -15045,8 +15115,8 @@ unreachable end local.get $4 - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 10 i32.add call $~lib/map/Map#set @@ -15054,7 +15124,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15063,36 +15133,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find28 - loop $while-continue|029 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -15100,23 +15170,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find28 + br_if $__inlined_func$~lib/map/Map#find30 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|029 + local.set $5 + br $while-continue|031 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 i32.eqz if i32.const 0 @@ -15127,13 +15197,13 @@ unreachable end local.get $4 - local.get $5 + local.get $0 call $~lib/map/Map#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15142,36 +15212,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find31 - loop $while-continue|032 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find33 + loop $while-continue|034 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -15179,23 +15249,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find31 + br_if $__inlined_func$~lib/map/Map#find33 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|032 + local.set $5 + br $while-continue|034 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 if i32.const 0 i32.const 1568 @@ -15204,10 +15274,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|4 end end @@ -15250,60 +15320,61 @@ ) (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=12 local.tee $2 @@ -15318,6 +15389,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -15326,9 +15398,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -15368,7 +15438,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -15376,7 +15446,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -15384,37 +15454,36 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $8 i32.ne if - local.get $8 + local.get $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $5 i64.load local.tee $6 i64.store local.get $2 - local.get $8 + local.get $5 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -15437,28 +15506,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add local.tee $9 i32.load @@ -15471,30 +15541,36 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 16 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $4 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -15507,60 +15583,61 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=12 local.tee $2 @@ -15575,6 +15652,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -15583,9 +15661,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -15616,84 +15693,85 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 i32.shl i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + local.get $2 + i64.store + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=12 local.tee $3 @@ -15708,6 +15786,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -15716,9 +15795,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -15739,14 +15817,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -15766,7 +15844,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -15777,9 +15855,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -15788,9 +15869,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -15805,8 +15889,8 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -15816,89 +15900,95 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i64) + (local $14 i32) (local $15 i32) - (local $16 i32) + (local $16 i64) (local $17 i32) global.get $~lib/memory/__stack_pointer 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 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i64.const 0 i64.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 i32.const 24 i32.const 20 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $9 i32.store - local.get $5 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 3 i32.store offset=4 - local.get $5 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 4 i32.store offset=12 - local.get $5 + local.get $9 i32.const 0 i32.store offset=16 - local.get $5 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 + local.get $1 + local.get $9 i32.store loop $for-loop|0 - local.get $4 + local.get $3 i64.const 100 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -15908,15 +15998,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -15927,10 +16017,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -15943,14 +16033,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -15963,14 +16053,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|1 - local.get $4 + local.get $3 i64.const 100 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -15981,10 +16071,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -15997,15 +16087,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16016,10 +16106,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -16032,14 +16122,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|1 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -16052,60 +16142,57 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $9 i32.load offset=8 - local.set $12 - local.get $5 + local.set $7 + local.get $9 i32.load offset=16 - local.tee $13 - local.set $3 - local.get $7 + local.tee $8 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 21 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $1 i32.const 0 i32.store offset=4 - local.get $6 + local.get $1 i32.const 0 i32.store offset=8 - local.get $6 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $10 i32.const 134217727 i32.gt_u if @@ -16117,69 +16204,72 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.const 8 - local.get $3 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $12 i32.store offset=4 - local.get $0 - local.get $9 + local.get $12 + local.get $11 call $~lib/memory/memory.fill - local.get $6 - local.get $0 - i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $0 + local.get $1 + local.get $12 + i32.store + local.get $12 + if + local.get $1 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $1 + local.get $11 i32.store offset=8 - local.get $6 - local.get $3 + local.get $1 + local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $6 + local.get $1 i32.store loop $for-loop|01 local.get $2 - local.get $13 + local.get $8 i32.lt_s if local.get $2 i32.const 4 i32.shl - local.get $12 + local.get $7 i32.add - local.tee $3 + local.tee $6 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $6 local.get $1 - local.get $3 + local.get $0 + local.get $6 i64.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 1 @@ -16188,24 +16278,24 @@ br $for-loop|01 end end - local.get $6 local.get $1 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 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 $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 call $~lib/map/Map#values - local.tee $13 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16215,64 +16305,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.const 22 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $11 i32.store - local.get $3 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $3 + local.get $11 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $3 + local.get $11 i32.const 0 i32.store offset=16 - local.get $3 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.gt_s if - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.le_u if i32.const 1248 @@ -16282,20 +16378,20 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.load offset=4 - local.get $10 + local.get $5 i32.const 3 i32.shl i32.add i64.load - local.set $4 - local.get $13 + local.set $3 local.get $10 - call $~lib/array/Array#__get - local.set $12 local.get $5 - local.get $4 + call $~lib/array/Array#__get + local.set $13 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16306,8 +16402,8 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $12 + local.get $9 + local.get $13 i32.const 20 i32.sub i64.extend_i32_s @@ -16328,13 +16424,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $11 i32.load - local.get $4 + local.get $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16344,7 +16440,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16356,26 +16452,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $15 - local.get $3 + local.tee $14 + local.get $11 i32.load offset=4 i32.and i32.const 2 @@ -16395,7 +16491,7 @@ if (result i32) i32.const 0 else - local.get $4 + local.get $3 local.get $0 i64.load i64.eq @@ -16414,18 +16510,18 @@ local.get $0 if local.get $0 - local.get $4 + local.get $3 i64.store offset=8 else - local.get $3 + local.get $11 i32.load offset=16 - local.get $3 + local.get $11 i32.load offset=12 i32.eq if - local.get $3 + local.get $11 i32.load offset=20 - local.get $3 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -16433,17 +16529,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $11 i32.load offset=4 else - local.get $3 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $1 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -16451,20 +16547,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $1 + local.get $15 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -16472,46 +16568,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $7 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $3 + local.get $11 i32.load offset=8 - local.tee $7 - local.get $3 + local.tee $4 + local.get $11 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 + local.set $8 local.get $2 local.set $0 - loop $while-continue|00 - local.get $7 - local.get $17 + loop $while-continue|02 + local.get $4 + local.get $8 i32.ne if - local.get $7 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $4 i64.load - local.tee $14 + local.tee $16 i64.store local.get $0 - local.get $7 + local.get $4 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $1 - local.get $14 + local.get $16 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16521,7 +16616,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $16 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16532,34 +16627,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $8 i32.xor + local.get $15 i32.and i32.const 2 i32.shl - local.get $9 + local.get $6 i32.add - local.tee $8 + local.tee $17 i32.load i32.store offset=16 - local.get $8 + local.get $17 local.get $0 i32.store local.get $0 @@ -16567,33 +16663,39 @@ i32.add local.set $0 end - local.get $7 + local.get $4 i32.const 24 i32.add - local.set $7 - br $while-continue|00 + local.set $4 + br $while-continue|02 end end - local.get $3 - local.get $9 + local.get $11 + local.get $6 i32.store - local.get $3 - local.get $9 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 + local.get $6 + if + local.get $11 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $15 i32.store offset=4 - local.get $3 + local.get $11 local.get $2 i32.store offset=8 - local.get $3 local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $16 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $7 i32.store offset=12 - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -16602,48 +16704,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $1 + local.get $2 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $4 + local.get $3 i64.store local.get $0 - local.get $4 - i64.store offset=8 - local.get $3 local.get $3 + i64.store offset=8 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $15 + local.get $14 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=16 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -16651,21 +16753,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 local.get $12 + local.get $13 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 br $for-loop|2 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -16677,7 +16779,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -16690,14 +16792,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|3 - local.get $4 + local.get $3 i64.const 50 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16708,10 +16810,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -16724,11 +16826,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16738,14 +16840,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|3 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -16758,14 +16860,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|4 - local.get $4 + local.get $3 i64.const 50 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16775,15 +16877,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16794,11 +16896,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16808,14 +16910,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|4 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -16827,9 +16929,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $9 call $~lib/map/Map#clear - local.get $5 + local.get $9 i32.load offset=20 if i32.const 0 @@ -16854,60 +16956,61 @@ ) (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=12 local.tee $2 @@ -16922,6 +17025,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -16930,9 +17034,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -16972,7 +17074,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -16980,7 +17082,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -16988,37 +17090,36 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $8 i32.ne if - local.get $8 + local.get $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $5 i64.load local.tee $6 i64.store local.get $2 - local.get $8 + local.get $5 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -17041,28 +17142,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add local.tee $9 i32.load @@ -17075,30 +17177,36 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 16 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $4 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -17111,60 +17219,61 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=12 local.tee $2 @@ -17179,6 +17288,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -17187,9 +17297,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -17205,60 +17314,61 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=12 local.tee $3 @@ -17273,6 +17383,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -17281,9 +17392,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -17304,14 +17414,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -17331,7 +17441,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -17339,8 +17449,8 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -17350,89 +17460,95 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i64) + (local $14 i32) (local $15 i32) - (local $16 i32) + (local $16 i64) (local $17 i32) global.get $~lib/memory/__stack_pointer 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 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i64.const 0 i64.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 i32.const 24 i32.const 23 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $9 i32.store - local.get $5 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 3 i32.store offset=4 - local.get $5 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 4 i32.store offset=12 - local.get $5 + local.get $9 i32.const 0 i32.store offset=16 - local.get $5 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 + local.get $1 + local.get $9 i32.store loop $for-loop|0 - local.get $4 + local.get $3 i64.const 100 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -17442,15 +17558,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17461,10 +17577,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -17477,14 +17593,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -17497,14 +17613,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|1 - local.get $4 + local.get $3 i64.const 100 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17515,10 +17631,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -17531,15 +17647,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17550,10 +17666,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -17566,14 +17682,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|1 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -17586,60 +17702,57 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $9 i32.load offset=8 - local.set $12 - local.get $5 + local.set $7 + local.get $9 i32.load offset=16 - local.tee $13 - local.set $3 - local.get $7 + local.tee $8 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 24 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $1 i32.const 0 i32.store offset=4 - local.get $6 + local.get $1 i32.const 0 i32.store offset=8 - local.get $6 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $10 i32.const 134217727 i32.gt_u if @@ -17651,69 +17764,72 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.const 8 - local.get $3 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $12 i32.store offset=4 - local.get $0 - local.get $9 + local.get $12 + local.get $11 call $~lib/memory/memory.fill - local.get $6 - local.get $0 + local.get $1 + local.get $12 i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $0 + local.get $12 + if + local.get $1 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $1 + local.get $11 i32.store offset=8 - local.get $6 - local.get $3 + local.get $1 + local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $6 + local.get $1 i32.store loop $for-loop|01 local.get $2 - local.get $13 + local.get $8 i32.lt_s if local.get $2 i32.const 4 i32.shl - local.get $12 + local.get $7 i32.add - local.tee $3 + local.tee $6 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $6 local.get $1 - local.get $3 + local.get $0 + local.get $6 i64.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 1 @@ -17722,24 +17838,24 @@ br $for-loop|01 end end - local.get $6 local.get $1 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 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 $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 call $~lib/map/Map#values - local.tee $13 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17749,64 +17865,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.const 25 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $11 i32.store - local.get $3 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $3 + local.get $11 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $3 + local.get $11 i32.const 0 i32.store offset=16 - local.get $3 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.gt_s if - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.le_u if i32.const 1248 @@ -17816,20 +17938,20 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.load offset=4 - local.get $10 + local.get $5 i32.const 3 i32.shl i32.add i64.load - local.set $4 - local.get $13 + local.set $3 local.get $10 - call $~lib/array/Array#__get - local.set $12 local.get $5 - local.get $4 + call $~lib/array/Array#__get + local.set $13 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17840,8 +17962,8 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $12 + local.get $9 + local.get $13 i32.const 20 i32.sub i64.extend_i32_s @@ -17862,13 +17984,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $11 i32.load - local.get $4 + local.get $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -17878,7 +18000,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -17890,26 +18012,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $15 - local.get $3 + local.tee $14 + local.get $11 i32.load offset=4 i32.and i32.const 2 @@ -17929,7 +18051,7 @@ if (result i32) i32.const 0 else - local.get $4 + local.get $3 local.get $0 i64.load i64.eq @@ -17948,18 +18070,18 @@ local.get $0 if local.get $0 - local.get $4 + local.get $3 i64.store offset=8 else - local.get $3 + local.get $11 i32.load offset=16 - local.get $3 + local.get $11 i32.load offset=12 i32.eq if - local.get $3 + local.get $11 i32.load offset=20 - local.get $3 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -17967,17 +18089,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $11 i32.load offset=4 else - local.get $3 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $1 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -17985,20 +18107,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $1 + local.get $15 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -18006,46 +18128,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $7 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $3 + local.get $11 i32.load offset=8 - local.tee $7 - local.get $3 + local.tee $4 + local.get $11 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 + local.set $8 local.get $2 local.set $0 - loop $while-continue|00 - local.get $7 - local.get $17 + loop $while-continue|02 + local.get $4 + local.get $8 i32.ne if - local.get $7 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $4 i64.load - local.tee $14 + local.tee $16 i64.store local.get $0 - local.get $7 + local.get $4 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $1 - local.get $14 + local.get $16 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -18055,7 +18176,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $16 i64.const 32 i64.shr_u i32.wrap_i64 @@ -18066,34 +18187,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $8 i32.xor + local.get $15 i32.and i32.const 2 i32.shl - local.get $9 + local.get $6 i32.add - local.tee $8 + local.tee $17 i32.load i32.store offset=16 - local.get $8 + local.get $17 local.get $0 i32.store local.get $0 @@ -18101,33 +18223,39 @@ i32.add local.set $0 end - local.get $7 + local.get $4 i32.const 24 i32.add - local.set $7 - br $while-continue|00 + local.set $4 + br $while-continue|02 end end - local.get $3 - local.get $9 + local.get $11 + local.get $6 i32.store - local.get $3 - local.get $9 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 + local.get $6 + if + local.get $11 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $15 i32.store offset=4 - local.get $3 + local.get $11 local.get $2 i32.store offset=8 - local.get $3 local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $16 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $7 i32.store offset=12 - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -18136,48 +18264,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $1 + local.get $2 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $4 + local.get $3 i64.store local.get $0 - local.get $4 - i64.store offset=8 - local.get $3 local.get $3 + i64.store offset=8 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $15 + local.get $14 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=16 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -18185,21 +18313,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 local.get $12 + local.get $13 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 br $for-loop|2 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -18211,7 +18339,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -18224,14 +18352,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|3 - local.get $4 + local.get $3 i64.const 50 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -18242,10 +18370,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -18258,11 +18386,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18272,14 +18400,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|3 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -18292,14 +18420,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|4 - local.get $4 + local.get $3 i64.const 50 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18309,15 +18437,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -18328,11 +18456,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18342,14 +18470,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|4 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -18361,9 +18489,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $9 call $~lib/map/Map#clear - local.get $5 + local.get $9 i32.load offset=20 if i32.const 0 @@ -18389,11 +18517,11 @@ (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -18422,7 +18550,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -18438,37 +18566,37 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 local.get $5 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $5 f32.load - local.tee $4 + local.tee $8 f32.store local.get $2 - local.get $8 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 + local.get $8 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18479,29 +18607,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add local.tee $9 i32.load @@ -18514,28 +18642,34 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 12 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $4 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $6 i32.store offset=12 @@ -18550,49 +18684,50 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -18607,6 +18742,7 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -18615,9 +18751,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -18633,49 +18768,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -18690,6 +18826,7 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -18698,9 +18835,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -18721,14 +18857,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -18748,7 +18884,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -18756,9 +18892,9 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) + (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -18766,8 +18902,8 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 f32) + (local $13 f32) + (local $14 i32) (local $15 i32) (local $16 i32) (local $17 i32) @@ -18775,84 +18911,90 @@ 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 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i64.const 0 i64.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=16 - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $2 i32.const 0 i32.store - local.get $5 + local.get $2 i32.const 24 i32.const 26 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $4 i32.store local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $2 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 3 i32.store offset=4 - local.get $4 + local.get $2 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $4 i32.store offset=8 local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $2 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 4 i32.store offset=12 - local.get $4 + local.get $2 i32.const 0 i32.store offset=16 - local.get $4 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $4 + local.get $3 + local.get $2 i32.store loop $for-loop|0 - local.get $3 + local.get $5 f32.const 100 f32.lt if - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18862,60 +19004,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 if i32.const 0 i32.const 1568 @@ -18924,18 +19066,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + local.get $2 + local.get $5 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18945,60 +19087,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -19008,10 +19150,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add @@ -19024,14 +19166,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|0 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -19044,17 +19186,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $5 loop $for-loop|1 - local.get $3 + local.get $5 f32.const 100 f32.lt if - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19064,60 +19206,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -19127,10 +19269,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add @@ -19143,18 +19285,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + local.get $2 + local.get $5 + local.get $5 i32.trunc_f32_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19164,60 +19306,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -19227,10 +19369,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 20 i32.add @@ -19243,14 +19385,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|1 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -19263,26 +19405,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $7 i32.const 0 i32.store - local.get $4 + local.get $2 + local.tee $3 i32.load offset=8 - local.set $12 - local.get $4 + local.set $8 + local.get $2 i32.load offset=16 - local.tee $13 - local.set $1 + local.tee $9 + local.set $2 local.get $7 i32.const 8 i32.sub @@ -19290,33 +19433,30 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $10 i64.const 0 i64.store - local.get $5 + local.get $10 i32.const 16 i32.const 27 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $10 i32.store - local.get $6 + local.get $10 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $10 i32.const 0 i32.store offset=4 - local.get $6 + local.get $10 i32.const 0 i32.store offset=8 - local.get $6 + local.get $10 i32.const 0 i32.store offset=12 - local.get $1 + local.get $2 i32.const 268435455 i32.gt_u if @@ -19328,74 +19468,77 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 8 - local.get $1 + local.get $2 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $9 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $12 i32.store offset=4 - local.get $5 - local.get $9 + local.get $12 + local.get $11 call $~lib/memory/memory.fill - local.get $6 - local.get $5 + local.get $10 + local.get $12 i32.store - local.get $6 - local.get $5 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 + local.get $12 + if + local.get $10 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $10 + local.get $11 i32.store offset=8 - local.get $6 - local.get $1 + local.get $10 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $7 - local.get $6 + local.get $10 i32.store loop $for-loop|01 - local.get $2 - local.get $13 + local.get $6 + local.get $9 i32.lt_s if - local.get $2 + local.get $6 i32.const 12 i32.mul - local.get $12 + local.get $8 i32.add - local.tee $5 + local.tee $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $0 - local.tee $1 + local.get $1 + local.tee $2 i32.const 1 i32.add - local.set $0 - local.get $5 + local.set $1 + local.get $7 f32.load - local.set $3 - local.get $6 + local.set $5 + local.get $10 i32.load offset=12 - local.get $1 + local.get $2 i32.le_u if - local.get $1 + local.get $2 i32.const 0 i32.lt_s if @@ -19406,52 +19549,52 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $1 + local.get $10 + local.get $2 i32.const 1 i32.add - local.tee $5 + local.tee $7 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $6 - local.get $5 + local.get $10 + local.get $7 i32.store offset=12 end - local.get $6 + local.get $10 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 f32.store end - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|01 end end - local.get $6 - local.get $0 + local.get $10 + local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - local.get $0 + local.get $10 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 call $~lib/map/Map#values - local.tee $13 + local.tee $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19461,65 +19604,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.const 28 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $11 i32.store - local.get $1 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $2 i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $1 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $2 i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $1 + local.get $11 i32.const 0 i32.store offset=16 - local.get $1 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $6 - i32.load offset=12 local.get $10 + i32.load offset=12 + local.get $0 i32.gt_s if - local.get $6 - i32.load offset=12 + local.get $0 + local.tee $1 local.get $10 - i32.le_u + i32.load offset=12 + i32.ge_u if i32.const 1248 i32.const 1728 @@ -19528,23 +19678,23 @@ call $~lib/builtins/abort unreachable end - local.get $6 - i32.load offset=4 local.get $10 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add f32.load - local.set $3 - local.get $13 - local.get $10 + local.set $5 + local.get $9 + local.get $1 call $~lib/array/Array#__get - local.set $12 - local.get $4 + local.set $7 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19555,59 +19705,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $0 + local.get $5 + local.get $4 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find12 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|011 + local.set $4 + br $while-continue|013 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 i32.eqz if i32.const 0 @@ -19617,15 +19767,15 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $12 + local.get $7 i32.const 20 i32.sub f32.convert_i32_s - local.tee $14 + local.tee $13 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19636,59 +19786,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $14 - local.get $0 + local.get $13 + local.get $4 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|014 + local.set $4 + br $while-continue|016 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 i32.eqz if i32.const 0 @@ -19705,13 +19855,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $11 i32.load - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19722,76 +19872,76 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $15 - local.get $1 + local.tee $14 + local.get $11 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $0 + local.get $5 + local.get $4 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find15 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find17 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|016 + local.set $4 + br $while-continue|018 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 if - local.get $0 - local.get $3 + local.get $4 + local.get $5 f32.store offset=4 else - local.get $1 + local.get $11 i32.load offset=16 - local.get $1 + local.get $11 i32.load offset=12 i32.eq if - local.get $1 + local.get $11 i32.load offset=20 - local.get $1 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -19799,17 +19949,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $1 + local.get $11 i32.load offset=4 else - local.get $1 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -19817,20 +19967,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -19838,45 +19988,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $15 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $1 + local.get $11 i32.load offset=8 - local.tee $7 - local.get $1 + local.tee $6 + local.get $11 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $17 + local.set $16 local.get $2 local.set $0 - loop $while-continue|017 - local.get $7 - local.get $17 + loop $while-continue|019 + local.get $6 + local.get $16 i32.ne if - local.get $7 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $6 f32.load - local.tee $14 + local.tee $13 f32.store local.get $0 - local.get $7 + local.get $6 f32.load offset=4 f32.store offset=4 local.get $0 - local.get $14 + local.get $13 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19886,35 +20036,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $8 i32.xor - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add - local.tee $8 + local.tee $17 i32.load i32.store offset=8 - local.get $8 + local.get $17 local.get $0 i32.store local.get $0 @@ -19922,33 +20072,39 @@ i32.add local.set $0 end - local.get $7 + local.get $6 i32.const 12 i32.add - local.set $7 - br $while-continue|017 + local.set $6 + br $while-continue|019 end end - local.get $1 - local.get $9 + local.get $11 + local.get $8 i32.store - local.get $1 - local.get $9 - call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $8 + if + local.get $11 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $4 i32.store offset=4 - local.get $1 + local.get $11 local.get $2 i32.store offset=8 - local.get $1 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $16 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $15 i32.store offset=12 - local.get $1 - local.get $1 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -19957,48 +20113,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $1 - local.get $1 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $5 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $5 + local.get $2 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $3 + local.get $5 f32.store local.get $0 - local.get $3 + local.get $5 f32.store offset=4 - local.get $1 - local.get $1 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $1 + local.get $11 i32.load - local.get $1 + local.get $11 i32.load offset=4 - local.get $15 + local.get $14 i32.and i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $2 i32.load i32.store offset=8 - local.get $5 + local.get $2 local.get $0 i32.store end @@ -20006,21 +20162,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 local.get $12 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $1 i32.const 1 i32.add - local.set $10 + local.set $0 br $for-loop|2 end end - local.get $1 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -20032,7 +20188,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -20045,17 +20201,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $5 loop $for-loop|3 - local.get $3 + local.get $5 f32.const 50 f32.lt if - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20065,60 +20221,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find19 - loop $while-continue|020 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find19 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|020 + local.set $0 + br $while-continue|022 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -20128,10 +20284,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 20 i32.add @@ -20144,14 +20300,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 + local.get $5 call $~lib/map/Map#delete - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20161,60 +20317,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find22 - loop $while-continue|023 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find22 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|023 + local.set $0 + br $while-continue|025 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20223,14 +20379,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|3 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -20243,17 +20399,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $5 loop $for-loop|4 - local.get $3 + local.get $5 f32.const 50 f32.lt if - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20263,60 +20419,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find25 - loop $while-continue|026 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find25 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|026 + local.set $0 + br $while-continue|028 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20325,18 +20481,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 local.get $3 + local.get $5 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20346,60 +20502,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find28 - loop $while-continue|029 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find28 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|029 + local.set $0 + br $while-continue|031 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -20409,14 +20565,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 + local.get $5 call $~lib/map/Map#delete - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20426,60 +20582,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find31 - loop $while-continue|032 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find33 + loop $while-continue|034 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find31 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find33 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|032 + local.set $0 + br $while-continue|034 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20488,14 +20644,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|4 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -20507,9 +20663,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 call $~lib/map/Map#clear - local.get $4 + local.get $3 i32.load offset=20 if i32.const 0 @@ -20522,75 +20678,76 @@ global.get $~lib/memory/__stack_pointer i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i32) + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + 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 local.get $0 i32.load offset=12 local.tee $3 @@ -20605,6 +20762,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -20613,21 +20771,19 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 f64) + (local $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $8 f64) + (local $9 i64) (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -20656,7 +20812,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -20664,7 +20820,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -20672,40 +20828,39 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $9 + local.get $5 + local.get $7 i32.ne if - local.get $9 + local.get $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 + local.get $5 f64.load - local.tee $5 + local.tee $8 f64.store local.get $2 - local.get $9 + local.get $5 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $1 - local.get $5 + local.get $8 i64.reinterpret_f64 - local.tee $4 + local.tee $9 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -20715,7 +20870,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $9 i64.const 32 i64.shr_u i32.wrap_i64 @@ -20727,28 +20882,29 @@ i32.const 668265263 i32.mul local.tee $10 - local.get $10 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul local.tee $10 - local.get $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul local.tee $10 - local.get $10 i32.const 16 i32.shr_u + local.get $10 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $8 + local.get $4 i32.add local.tee $10 i32.load @@ -20761,30 +20917,36 @@ i32.add local.set $2 end - local.get $9 + local.get $5 i32.const 16 i32.add - local.set $9 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $8 + local.get $4 i32.store - local.get $0 - local.get $8 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -20798,62 +20960,63 @@ (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + 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 local.get $0 i32.load offset=12 local.tee $3 @@ -20868,6 +21031,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -20876,84 +21040,84 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 i64) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -20965,7 +21129,8 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -20973,9 +21138,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -20996,14 +21160,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.lt_u select @@ -21023,7 +21187,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -21033,7 +21197,7 @@ (local $2 i32) (local $3 f64) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) @@ -21042,20 +21206,20 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i64) + (local $14 i32) (local $15 i32) (local $16 i32) - (local $17 i32) - (local $18 f64) + (local $17 f64) + (local $18 i32) global.get $~lib/memory/__stack_pointer 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 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -21073,43 +21237,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $6 i32.const 24 i32.const 29 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $9 i32.store - local.get $4 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $6 i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $9 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 3 i32.store offset=4 - local.get $4 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $6 i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $9 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 4 i32.store offset=12 - local.get $4 + local.get $9 i32.const 0 i32.store offset=16 - local.get $4 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -21117,14 +21287,14 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $4 + local.get $9 i32.store loop $for-loop|0 local.get $3 f64.const 100 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -21135,14 +21305,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21154,7 +21324,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21177,7 +21347,7 @@ br $for-loop|0 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -21196,7 +21366,7 @@ f64.const 100 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21208,7 +21378,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21224,14 +21394,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 local.get $3 i32.trunc_f64_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21243,7 +21413,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21266,7 +21436,7 @@ br $for-loop|1 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -21287,52 +21457,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store - local.get $4 + local.get $9 i32.load offset=8 - local.set $12 - local.get $4 + local.set $7 + local.get $9 i32.load offset=16 - local.tee $13 - local.set $1 - local.get $7 + local.tee $8 + local.set $10 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $11 i64.const 0 i64.store - local.get $5 + local.get $11 i32.const 16 i32.const 30 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $11 i32.store - local.get $6 + local.get $11 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $11 i32.const 0 i32.store offset=4 - local.get $6 + local.get $11 i32.const 0 i32.store offset=8 - local.get $6 + local.get $11 i32.const 0 i32.store offset=12 - local.get $1 + local.get $10 i32.const 134217727 i32.gt_u if @@ -21344,55 +21511,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $10 i32.const 8 - local.get $1 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $12 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $13 i32.store offset=4 - local.get $5 - local.get $9 + local.get $13 + local.get $12 call $~lib/memory/memory.fill - local.get $6 - local.get $5 + local.get $11 + local.get $13 i32.store - local.get $6 - local.get $5 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 + local.get $13 + if + local.get $11 + local.get $13 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $13 i32.store offset=4 - local.get $6 - local.get $9 + local.get $11 + local.get $12 i32.store offset=8 - local.get $6 - local.get $1 + local.get $11 + local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $6 + local.get $1 + local.get $11 i32.store loop $for-loop|01 local.get $2 - local.get $13 + local.get $8 i32.lt_s if local.get $2 i32.const 4 i32.shl - local.get $12 + local.get $7 i32.add - local.tee $5 + local.tee $10 i32.load offset=12 i32.const 1 i32.and @@ -21403,10 +21573,10 @@ i32.const 1 i32.add local.set $0 - local.get $5 + local.get $10 f64.load local.set $3 - local.get $6 + local.get $11 i32.load offset=12 local.get $1 i32.le_u @@ -21422,19 +21592,19 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $11 local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $10 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $6 - local.get $5 + local.get $11 + local.get $10 i32.store offset=12 end - local.get $6 + local.get $11 i32.load offset=4 local.get $1 i32.const 3 @@ -21450,24 +21620,24 @@ br $for-loop|01 end end - local.get $6 + local.get $11 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 + local.get $11 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 $6 + local.get $11 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $9 call $~lib/map/Map#values - local.tee $13 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21477,7 +21647,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -21486,55 +21656,61 @@ i32.const 24 i32.const 31 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $12 i32.store - local.get $1 + local.get $12 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $1 i32.store local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 3 i32.store offset=4 - local.get $1 + local.get $12 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $1 i32.store offset=8 local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 4 i32.store offset=12 - local.get $1 + local.get $12 i32.const 0 i32.store offset=16 - local.get $1 + local.get $12 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $13 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $11 i32.load offset=12 - local.get $10 + local.get $4 i32.gt_s if - local.get $6 + local.get $11 i32.load offset=12 - local.get $10 + local.get $4 i32.le_u if i32.const 1248 @@ -21544,19 +21720,19 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $11 i32.load offset=4 - local.get $10 + local.get $4 i32.const 3 i32.shl i32.add f64.load local.set $3 - local.get $13 local.get $10 - call $~lib/array/Array#__get - local.set $12 local.get $4 + call $~lib/array/Array#__get + local.set $14 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21568,8 +21744,8 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $12 + local.get $9 + local.get $14 i32.const 20 i32.sub f64.convert_i32_s @@ -21590,15 +21766,15 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $12 i32.load local.get $3 i64.reinterpret_f64 - local.tee $14 + local.tee $5 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21608,7 +21784,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21620,26 +21796,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor local.tee $15 - local.get $1 + local.get $12 i32.load offset=4 i32.and i32.const 2 @@ -21653,7 +21829,7 @@ if local.get $0 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) @@ -21665,7 +21841,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 @@ -21681,15 +21857,15 @@ local.get $3 f64.store offset=8 else - local.get $1 + local.get $12 i32.load offset=16 - local.get $1 + local.get $12 i32.load offset=12 i32.eq if - local.get $1 + local.get $12 i32.load offset=20 - local.get $1 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -21697,17 +21873,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $1 + local.get $12 i32.load offset=4 else - local.get $1 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $5 + local.set $16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -21715,20 +21891,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $5 + local.get $16 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -21736,48 +21912,47 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $7 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $1 + local.get $12 i32.load offset=8 - local.tee $7 - local.get $1 + local.tee $2 + local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 - local.get $2 + local.set $8 + local.get $1 local.set $0 - loop $while-continue|00 - local.get $7 - local.get $17 + loop $while-continue|02 + local.get $2 + local.get $8 i32.ne if - local.get $7 + local.get $2 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $2 f64.load - local.tee $18 + local.tee $17 f64.store local.get $0 - local.get $7 + local.get $2 f64.load offset=8 f64.store offset=8 local.get $0 - local.get $5 - local.get $18 + local.get $17 i64.reinterpret_f64 - local.tee $14 + local.tee $5 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21787,7 +21962,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21798,34 +21973,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $18 + local.get $18 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $18 + local.get $18 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $18 + local.get $18 i32.const 16 i32.shr_u - local.get $8 i32.xor + local.get $16 i32.and i32.const 2 i32.shl - local.get $9 + local.get $6 i32.add - local.tee $8 + local.tee $18 i32.load i32.store offset=16 - local.get $8 + local.get $18 local.get $0 i32.store local.get $0 @@ -21833,33 +22009,39 @@ i32.add local.set $0 end - local.get $7 + local.get $2 i32.const 24 i32.add - local.set $7 - br $while-continue|00 + local.set $2 + br $while-continue|02 end end - local.get $1 - local.get $9 + local.get $12 + local.get $6 i32.store - local.get $1 - local.get $9 - call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $6 + if + local.get $12 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $16 i32.store offset=4 + local.get $12 local.get $1 - local.get $2 i32.store offset=8 local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $16 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -21868,18 +22050,18 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $1 - local.get $1 + local.get $12 + local.get $12 i32.load offset=16 - local.tee $5 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $5 + local.get $1 i32.const 24 i32.mul local.get $0 @@ -21890,26 +22072,26 @@ local.get $0 local.get $3 f64.store offset=8 - local.get $1 - local.get $1 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $1 + local.get $12 i32.load - local.get $1 + local.get $12 i32.load offset=4 local.get $15 i32.and i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $1 i32.load i32.store offset=16 - local.get $5 + local.get $1 local.get $0 i32.store end @@ -21917,21 +22099,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $13 + local.get $14 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $4 i32.const 1 i32.add - local.set $10 + local.set $4 br $for-loop|2 end end - local.get $1 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -21943,7 +22125,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -21962,7 +22144,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21974,7 +22156,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21990,10 +22172,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#delete - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -22011,7 +22193,7 @@ br $for-loop|3 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -22030,7 +22212,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -22041,14 +22223,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -22060,10 +22242,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#delete - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -22081,7 +22263,7 @@ br $for-loop|4 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -22093,9 +22275,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 call $~lib/map/Map#clear - local.get $4 + local.get $9 i32.load offset=20 if i32.const 0 @@ -22119,6 +22301,7 @@ unreachable ) (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) block $folding-inner1 block $folding-inner0 block $invalid @@ -22140,7 +22323,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -22148,15 +22331,27 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=8 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start memory.size @@ -22303,80 +22498,80 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + 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 $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load8_u local.get $3 + i32.load8_u + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -22412,24 +22607,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store8 + i32.add + local.tee $3 local.get $1 + i32.store8 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -22438,12 +22633,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -22452,7 +22647,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -22494,9 +22689,6 @@ i32.store local.get $1 i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 i32.const 0 @@ -22524,25 +22716,28 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 local.get $3 + local.get $2 call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $1 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 local.get $0 @@ -22575,28 +22770,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 0 i32.store local.get $0 i32.load offset=8 - local.set $4 - local.get $2 + local.set $3 + local.get $4 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 call $~lib/array/Array#constructor local.tee $0 i32.store loop $for-loop|0 local.get $2 - local.get $3 - i32.gt_s + local.get $4 + i32.lt_s if - local.get $3 + local.get $2 i32.const 12 i32.mul - local.get $4 + local.get $3 i32.add local.tee $5 i32.load offset=8 @@ -22614,10 +22809,10 @@ i32.add local.set $1 end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -22668,9 +22863,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -22679,9 +22877,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -22719,77 +22920,77 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -22825,24 +23026,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store + i32.add + local.tee $3 local.get $1 + i32.store + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -22851,12 +23052,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -22865,7 +23066,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -22895,81 +23096,81 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load8_u local.get $3 + i32.load8_u + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23005,24 +23206,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store8 + i32.add + local.tee $3 local.get $1 + i32.store8 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23031,12 +23232,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23045,7 +23246,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23075,80 +23276,80 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + 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 $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load16_u local.get $3 + i32.load16_u + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23184,24 +23385,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store16 + i32.add + local.tee $3 local.get $1 + i32.store16 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23210,12 +23411,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23224,7 +23425,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23254,81 +23455,81 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load16_u local.get $3 + i32.load16_u + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23364,24 +23565,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store16 + i32.add + local.tee $3 local.get $1 + i32.store16 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23390,12 +23591,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23404,7 +23605,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23423,88 +23624,88 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - if - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23540,24 +23741,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store + i32.add + local.tee $3 local.get $1 + i32.store + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23566,12 +23767,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23580,7 +23781,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23610,64 +23811,65 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23679,7 +23881,8 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and local.set $3 @@ -23687,9 +23890,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -23732,11 +23934,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.shl local.get $3 @@ -23758,7 +23960,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23797,28 +23999,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 0 i32.store local.get $0 i32.load offset=8 - local.set $4 - local.get $2 + local.set $3 + local.get $4 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 call $~lib/array/Array#constructor local.tee $0 i32.store loop $for-loop|0 local.get $2 - local.get $3 - i32.gt_s + local.get $4 + i32.lt_s if - local.get $3 + local.get $2 i32.const 4 i32.shl - local.get $4 + local.get $3 i32.add local.tee $5 i32.load offset=12 @@ -23836,10 +24038,10 @@ i32.add local.set $1 end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -23879,64 +24081,65 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23948,7 +24151,8 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and local.set $3 @@ -23956,9 +24160,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -24001,11 +24204,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.shl local.get $3 @@ -24027,7 +24230,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -24066,53 +24269,54 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -24124,7 +24328,8 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and local.set $3 @@ -24132,9 +24337,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -24177,11 +24381,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul local.get $3 @@ -24203,7 +24407,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -24222,8 +24426,8 @@ ) (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24243,66 +24447,67 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i64.reinterpret_f64 - local.tee $5 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $6 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=12 - local.tee $4 + local.tee $6 i32.const 1 i32.and if (result i32) @@ -24314,7 +24519,8 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $6 i32.const -2 i32.and local.set $3 @@ -24322,9 +24528,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -24367,11 +24572,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $6 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $6 i32.const 4 i32.shl local.get $3 @@ -24393,7 +24598,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $6 + local.get $5 i32.and i32.const 2 i32.shl @@ -24410,4 +24615,72 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 + ) ) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index decb92239f..95bd63739f 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -1,11 +1,12 @@ (module (type $f64_=>_f64 (func (param f64) (result f64))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) + (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) @@ -13,7 +14,6 @@ (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $i64_=>_none (func (param i64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (type $f64_=>_none (func (param f64))) @@ -316,11 +316,10 @@ local.get $1 local.get $1 f64.ne - i32.const 0 local.get $0 local.get $0 f64.ne - select + i32.and br_if $__inlined_func$std/math/ulperr drop local.get $0 @@ -415,11 +414,10 @@ local.get $1 local.get $1 f32.ne - i32.const 0 local.get $0 local.get $0 f32.ne - select + i32.and br_if $__inlined_func$std/math/ulperrf drop local.get $0 @@ -563,32 +561,32 @@ i32.const 1 ) (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 f64) + (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 f64) local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $2 i32.const 2147483647 i32.and - local.tee $2 + local.tee $1 i32.const 1072693248 i32.ge_u if local.get $0 i64.reinterpret_f64 i32.wrap_i64 - local.get $2 + local.get $1 i32.const 1072693248 i32.sub i32.or i32.eqz if - local.get $3 + local.get $2 i32.const 31 i32.shr_u if @@ -605,11 +603,11 @@ f64.div return end - local.get $2 + local.get $1 i32.const 1071644672 i32.lt_u if - local.get $2 + local.get $1 i32.const 1012924416 i32.le_u if @@ -670,7 +668,7 @@ f64.sub return end - local.get $3 + local.get $2 i32.const 31 i32.shr_u if @@ -682,7 +680,7 @@ f64.add local.tee $0 f64.sqrt - local.tee $1 + local.tee $3 local.get $0 local.get $0 local.get $0 @@ -724,7 +722,7 @@ f64.const 1 f64.add f64.div - local.get $1 + local.get $3 f64.mul f64.const 6.123233995736766e-17 f64.sub @@ -739,20 +737,20 @@ f64.const 0.5 f64.mul f64.sub - local.tee $0 + local.tee $3 f64.sqrt - local.tee $4 + local.tee $0 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $1 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.tee $4 + local.get $3 + local.get $3 + local.get $3 + local.get $3 + local.get $3 + local.get $3 f64.const 3.479331075960212e-05 f64.mul f64.const 7.915349942898145e-04 @@ -770,10 +768,10 @@ f64.const 0.16666666666666666 f64.add f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 + local.get $3 + local.get $3 f64.const 0.07703815055590194 f64.mul f64.const -0.6882839716054533 @@ -788,15 +786,15 @@ f64.const 1 f64.add f64.div - local.get $4 - f64.mul local.get $0 - local.get $1 - local.get $1 + f64.mul + local.get $3 + local.get $4 + local.get $4 f64.mul f64.sub + local.get $0 local.get $4 - local.get $1 f64.add f64.div f64.add @@ -805,25 +803,24 @@ f64.mul ) (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 f32) + (local $1 i32) (local $2 i32) (local $3 f32) - (local $4 i32) - (local $5 f32) + (local $4 f32) local.get $0 i32.reinterpret_f32 - local.tee $4 + local.tee $2 i32.const 2147483647 i32.and - local.tee $2 + local.tee $1 i32.const 1065353216 i32.ge_u if - local.get $2 + local.get $1 i32.const 1065353216 i32.eq if - local.get $4 + local.get $2 i32.const 31 i32.shr_u if @@ -840,11 +837,11 @@ f32.div return end - local.get $2 + local.get $1 i32.const 1056964608 i32.lt_u if - local.get $2 + local.get $1 i32.const 847249408 i32.le_u if @@ -881,7 +878,7 @@ f32.sub return end - local.get $4 + local.get $2 i32.const 31 i32.shr_u if @@ -893,7 +890,7 @@ f32.add local.tee $0 f32.sqrt - local.tee $1 + local.tee $3 local.get $0 local.get $0 local.get $0 @@ -911,7 +908,7 @@ f32.const 1 f32.add f32.div - local.get $1 + local.get $3 f32.mul f32.const 7.549789415861596e-08 f32.sub @@ -926,18 +923,17 @@ f32.const 0.5 f32.mul f32.sub - local.tee $1 + local.tee $3 f32.sqrt - local.tee $5 + local.tee $0 i32.reinterpret_f32 i32.const -4096 i32.and f32.reinterpret_i32 - local.tee $3 - local.get $1 - local.tee $0 - local.get $0 - local.get $0 + local.tee $4 + local.get $3 + local.get $3 + local.get $3 f32.const -0.008656363002955914 f32.mul f32.const -0.04274342209100723 @@ -946,21 +942,21 @@ f32.const 0.16666586697101593 f32.add f32.mul - local.get $0 + local.get $3 f32.const -0.7066296339035034 f32.mul f32.const 1 f32.add f32.div - local.get $5 - f32.mul local.get $0 + f32.mul local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.mul f32.sub - local.get $5 - local.get $3 + local.get $0 + local.get $4 f32.add f32.div f32.add @@ -971,28 +967,27 @@ (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) (local $1 f64) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 f64) - (local $5 i64) + (local $5 i32) (local $6 f64) (local $7 f64) i32.const 1 - local.set $3 - i32.const 1 + local.set $2 local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $5 i32.const 31 i32.shr_u - local.get $2 + local.get $5 i32.const 1071284858 i32.lt_u - select + i32.or if - local.get $2 + local.get $5 i32.const -1074790400 i32.ge_u if @@ -1012,7 +1007,7 @@ f64.div return end - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 2034237440 @@ -1021,19 +1016,19 @@ local.get $0 return end - local.get $2 + local.get $5 i32.const -1076707644 i32.le_u if (result f64) i32.const 0 - local.set $3 + local.set $2 local.get $0 else f64.const 0 end local.set $1 else - local.get $2 + local.get $5 i32.const 2146435072 i32.ge_u if @@ -1041,29 +1036,29 @@ return end end - local.get $3 + local.get $2 if local.get $0 f64.const 1 f64.add i64.reinterpret_f64 - local.tee $5 + local.tee $3 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 614242 i32.add - local.tee $2 + local.tee $5 i32.const 20 i32.shr_u i32.const 1023 i32.sub - local.tee $3 + local.tee $2 i32.const 54 i32.lt_s if (result f64) f64.const 1 - local.get $5 + local.get $3 f64.reinterpret_i64 local.tee $1 local.get $0 @@ -1074,7 +1069,7 @@ f64.const 1 f64.sub f64.sub - local.get $3 + local.get $2 i32.const 2 i32.ge_s select @@ -1083,11 +1078,11 @@ else f64.const 0 end - local.set $6 - local.get $5 + local.set $4 + local.get $3 i64.const 4294967295 i64.and - local.get $2 + local.get $5 i32.const 1048575 i32.and i32.const 1072079006 @@ -1106,20 +1101,20 @@ f64.const 2 f64.add f64.div - local.tee $4 - local.get $4 + local.tee $6 + local.get $6 f64.mul local.tee $7 local.get $7 f64.mul local.set $0 - local.get $4 + local.get $6 local.get $1 f64.const 0.5 f64.mul local.get $1 f64.mul - local.tee $4 + local.tee $6 local.get $7 local.get $0 local.get $0 @@ -1149,15 +1144,15 @@ f64.add f64.add f64.mul - local.get $3 + local.get $2 f64.convert_i32_s local.tee $0 f64.const 1.9082149292705877e-10 f64.mul - local.get $6 + local.get $4 f64.add f64.add - local.get $4 + local.get $6 f64.sub local.get $1 f64.add @@ -1168,11 +1163,11 @@ ) (func $~lib/math/NativeMath.log (param $0 f64) (result f64) (local $1 i64) - (local $2 f64) - (local $3 f64) - (local $4 i32) + (local $2 i32) + (local $3 i64) + (local $4 f64) (local $5 f64) - (local $6 i64) + (local $6 f64) (local $7 i32) block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 @@ -1189,40 +1184,40 @@ local.tee $0 local.get $0 f64.mul - local.tee $2 + local.tee $4 local.get $0 f64.mul - local.tee $3 + local.tee $5 local.get $0 f64.const -0.24999999999998432 f64.mul f64.const 0.3333333333333352 f64.add - local.get $2 + local.get $4 f64.const 0.19999999999320328 f64.mul f64.add - local.get $3 + local.get $5 local.get $0 f64.const 0.14285715076560868 f64.mul f64.const -0.16666666669929706 f64.add - local.get $2 + local.get $4 f64.const -0.12499997863982555 f64.mul f64.add - local.get $3 + local.get $5 local.get $0 f64.const -0.10000486757818193 f64.mul f64.const 0.11110712032936046 f64.add - local.get $2 + local.get $4 f64.const 0.09181994006195467 f64.mul f64.add - local.get $3 + local.get $5 f64.const -0.08328363062289341 f64.mul f64.add @@ -1237,33 +1232,33 @@ local.get $0 f64.const 134217728 f64.mul - local.tee $2 + local.tee $4 f64.add - local.get $2 + local.get $4 f64.sub - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 f64.mul f64.const -0.5 f64.mul local.tee $5 f64.add - local.tee $3 + local.tee $6 f64.sub local.get $5 f64.add local.get $0 - local.get $2 + local.get $4 f64.sub f64.const -0.5 f64.mul - local.get $2 + local.get $4 local.get $0 f64.add f64.mul f64.add f64.add - local.get $3 + local.get $6 f64.add br $~lib/util/math/log_lut|inlined.0 end @@ -1271,7 +1266,7 @@ i64.const 48 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.const 16 i32.sub i32.const 32736 @@ -1289,32 +1284,31 @@ br_if $~lib/util/math/log_lut|inlined.0 drop local.get $0 - local.tee $2 local.get $1 i64.const 9218868437227405312 i64.eq br_if $~lib/util/math/log_lut|inlined.0 drop i32.const 1 - local.get $4 + local.get $2 i32.const 32752 i32.and i32.const 32752 i32.eq - local.get $4 + local.get $2 i32.const 32768 i32.and select if - local.get $2 - local.get $2 + 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 $2 + local.get $0 f64.const 4503599627370496 f64.mul i64.reinterpret_f64 @@ -1325,7 +1319,7 @@ local.get $1 i64.const 4604367669032910848 i64.sub - local.tee $6 + local.tee $3 i64.const 45 i64.shr_u i64.const 127 @@ -1333,68 +1327,68 @@ i32.wrap_i64 i32.const 4 i32.shl - local.tee $4 + local.tee $2 i32.const 1088 i32.add local.set $7 - local.get $6 + local.get $3 i64.const 52 i64.shr_s f64.convert_i64_s - local.tee $3 + local.tee $0 f64.const 0.6931471805598903 f64.mul local.get $7 f64.load offset=8 f64.add - local.tee $2 + local.tee $4 local.get $1 - local.get $6 + local.get $3 i64.const -4503599627370496 i64.and i64.sub f64.reinterpret_i64 - local.get $4 + local.get $2 i32.const 3136 i32.add - local.tee $4 + local.tee $2 f64.load f64.sub - local.get $4 + local.get $2 f64.load offset=8 f64.sub local.get $7 f64.load f64.mul - local.tee $0 + local.tee $5 f64.add - local.set $5 - local.get $2 - local.get $5 + local.set $6 + local.get $4 + local.get $6 f64.sub - local.get $0 + local.get $5 f64.add - local.get $3 + local.get $0 f64.const 5.497923018708371e-14 f64.mul f64.add - local.get $0 - local.get $0 + local.get $5 + local.get $5 f64.mul - local.tee $2 + local.tee $0 f64.const -0.5000000000000001 f64.mul f64.add + local.get $5 local.get $0 - local.get $2 f64.mul - local.get $0 + local.get $5 f64.const -0.2499999999622955 f64.mul f64.const 0.33333333331825593 f64.add - local.get $2 local.get $0 + local.get $5 f64.const -0.16667054827627667 f64.mul f64.const 0.20000304511814496 @@ -1403,46 +1397,44 @@ f64.add f64.mul f64.add - local.get $5 + 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) + (local $3 i64) + (local $4 f64) block $__inlined_func$~lib/math/NativeMath.acosh (result f64) local.get $0 - local.tee $3 + local.get $0 + f64.sub + f64.const 0 + f64.div + local.get $0 i64.reinterpret_f64 - local.tee $4 + local.tee $3 i64.const 4607182418800017408 i64.lt_s - if - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.div - br $__inlined_func$~lib/math/NativeMath.acosh - end - local.get $4 + br_if $__inlined_func$~lib/math/NativeMath.acosh + drop + local.get $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $4 + local.tee $3 i64.const 1024 i64.lt_u if - local.get $3 + local.get $0 f64.const 1 f64.sub - local.tee $3 - local.get $3 - local.get $3 + local.tee $4 + local.get $4 + local.get $4 f64.mul - local.get $3 - local.get $3 + local.get $4 + local.get $4 f64.add f64.add f64.sqrt @@ -1450,17 +1442,17 @@ call $~lib/math/NativeMath.log1p br $__inlined_func$~lib/math/NativeMath.acosh end - local.get $4 + local.get $3 i64.const 1049 i64.lt_u if - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.add f64.const 1 - local.get $3 - local.get $3 - local.get $3 + local.get $0 + local.get $0 + local.get $0 f64.mul f64.const 1 f64.sub @@ -1471,7 +1463,7 @@ call $~lib/math/NativeMath.log br $__inlined_func$~lib/math/NativeMath.acosh end - local.get $3 + local.get $0 call $~lib/math/NativeMath.log f64.const 0.6931471805599453 f64.add @@ -1492,24 +1484,23 @@ (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) (local $1 f32) (local $2 i32) - (local $3 i32) - (local $4 f32) + (local $3 f32) + (local $4 i32) (local $5 f32) (local $6 f32) i32.const 1 - local.set $3 - i32.const 1 + local.set $2 local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $4 i32.const 31 i32.shr_u - local.get $2 + local.get $4 i32.const 1054086096 i32.lt_u - select + i32.or if - local.get $2 + local.get $4 i32.const -1082130432 i32.ge_u if @@ -1529,7 +1520,7 @@ f32.div return end - local.get $2 + local.get $4 i32.const 1 i32.shl i32.const 1728053248 @@ -1538,19 +1529,19 @@ local.get $0 return end - local.get $2 + local.get $4 i32.const -1097468391 i32.le_u if (result f32) i32.const 0 - local.set $3 + local.set $2 local.get $0 else f32.const 0 end local.set $1 else - local.get $2 + local.get $4 i32.const 2139095040 i32.ge_u if @@ -1558,7 +1549,7 @@ return end end - local.get $3 + local.get $2 if local.get $0 f32.const 1 @@ -1567,12 +1558,12 @@ i32.reinterpret_f32 i32.const 4913933 i32.add - local.tee $2 + local.tee $4 i32.const 23 i32.shr_u i32.const 127 i32.sub - local.tee $3 + local.tee $2 i32.const 25 i32.lt_s if (result f32) @@ -1586,7 +1577,7 @@ f32.const 1 f32.sub f32.sub - local.get $3 + local.get $2 i32.const 2 i32.ge_s select @@ -1595,8 +1586,8 @@ else f32.const 0 end - local.set $6 - local.get $2 + local.set $3 + local.get $4 i32.const 8388607 i32.and i32.const 1060439283 @@ -1611,29 +1602,29 @@ f32.const 2 f32.add f32.div + local.tee $5 + local.get $5 + f32.mul local.tee $0 local.get $0 f32.mul - local.tee $4 - local.get $4 - f32.mul - local.set $5 - local.get $0 + local.set $6 + local.get $5 local.get $1 f32.const 0.5 f32.mul local.get $1 f32.mul - local.tee $0 - local.get $4 - local.get $5 + 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 $5 - local.get $5 + local.get $6 + local.get $6 f32.const 0.24279078841209412 f32.mul f32.const 0.40000972151756287 @@ -1642,19 +1633,19 @@ f32.add f32.add f32.mul - local.get $3 + local.get $2 f32.convert_i32_s - local.tee $4 + local.tee $0 f32.const 9.05800061445916e-06 f32.mul - local.get $6 + local.get $3 f32.add f32.add - local.get $0 + local.get $5 f32.sub local.get $1 f32.add - local.get $4 + local.get $0 f32.const 0.6931381225585938 f32.mul f32.add @@ -1687,16 +1678,15 @@ i32.eq br_if $~lib/util/math/logf_lut|inlined.0 drop - i32.const 1 + local.get $1 + i32.const 31 + i32.shr_u local.get $1 i32.const 1 i32.shl i32.const -16777216 i32.ge_u - local.get $1 - i32.const 31 - i32.shr_u - select + i32.or if local.get $0 local.get $0 @@ -1825,26 +1815,26 @@ call $std/math/check ) (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 f64) + (local $1 i32) (local $2 i32) (local $3 f64) - (local $4 i32) + (local $4 f64) local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.const 2147483647 i32.and - local.tee $2 + local.tee $1 i32.const 1072693248 i32.ge_u if local.get $0 i64.reinterpret_f64 i32.wrap_i64 - local.get $2 + local.get $1 i32.const 1072693248 i32.sub i32.or @@ -1864,18 +1854,17 @@ f64.div return end - local.get $2 + local.get $1 i32.const 1071644672 i32.lt_u if - local.get $2 - i32.const 1048576 - i32.ge_u - i32.const 0 - local.get $2 + local.get $1 i32.const 1045430272 i32.lt_u - select + local.get $1 + i32.const 1048576 + i32.ge_u + i32.and if local.get $0 return @@ -1936,15 +1925,15 @@ f64.const 0.5 f64.mul f64.sub - local.tee $0 + local.tee $4 f64.sqrt - local.set $1 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.set $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 @@ -1962,10 +1951,10 @@ f64.const 0.16666666666666666 f64.add f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.get $4 + local.get $4 + local.get $4 + local.get $4 f64.const 0.07703815055590194 f64.mul f64.const -0.6882839716054533 @@ -1981,13 +1970,13 @@ f64.add f64.div local.set $3 - local.get $2 + local.get $1 i32.const 1072640819 i32.ge_u if (result f64) f64.const 1.5707963267948966 - local.get $1 - local.get $1 + local.get $0 + local.get $0 local.get $3 f64.mul f64.add @@ -1998,24 +1987,24 @@ f64.sub else f64.const 0.7853981633974483 - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.add local.get $3 f64.mul f64.const 6.123233995736766e-17 + local.get $4 local.get $0 - local.get $1 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $0 - local.get $0 + local.tee $3 + local.get $3 f64.mul f64.sub - local.get $1 local.get $0 + local.get $3 f64.add f64.div f64.const 2 @@ -2023,15 +2012,15 @@ f64.sub f64.sub f64.const 0.7853981633974483 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add f64.sub f64.sub f64.sub end local.set $0 - local.get $4 + local.get $2 i32.const 31 i32.shr_u if @@ -2075,14 +2064,13 @@ i32.const 1056964608 i32.lt_u if - local.get $1 - i32.const 8388608 - i32.ge_u - i32.const 0 local.get $1 i32.const 964689920 i32.lt_u - select + local.get $1 + i32.const 8388608 + i32.ge_u + i32.and if local.get $0 return @@ -2153,61 +2141,61 @@ f32.copysign ) (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) + (local $3 i64) (local $4 i64) - (local $5 i64) + (local $5 f64) local.get $0 i64.reinterpret_f64 - local.tee $5 + local.tee $4 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $4 - local.get $5 + local.set $3 + local.get $4 i64.const 9223372036854775807 i64.and f64.reinterpret_i64 - local.set $3 - local.get $4 + local.set $5 + local.get $3 i64.const 1049 i64.ge_u if (result f64) - local.get $3 + local.get $5 call $~lib/math/NativeMath.log f64.const 0.6931471805599453 f64.add else - local.get $4 + local.get $3 i64.const 1024 i64.ge_u if (result f64) - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add f64.const 1 - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.mul f64.const 1 f64.add f64.sqrt - local.get $3 + local.get $5 f64.add f64.div f64.add call $~lib/math/NativeMath.log else - local.get $4 + local.get $3 i64.const 997 i64.ge_u if (result f64) - local.get $3 - local.get $3 - local.get $3 + local.get $5 + local.get $5 + local.get $5 f64.mul - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 f64.const 1 f64.add f64.sqrt @@ -2217,7 +2205,7 @@ f64.add call $~lib/math/NativeMath.log1p else - local.get $3 + local.get $5 end end end @@ -2237,54 +2225,54 @@ end ) (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 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 $3 - local.get $4 + local.set $4 + local.get $3 i32.const 1166016512 i32.ge_u if (result f32) - local.get $3 + local.get $4 call $~lib/math/NativeMathf.log f32.const 0.6931471824645996 f32.add else - local.get $4 + local.get $3 i32.const 1073741824 i32.ge_u if (result f32) - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.add f32.const 1 - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.mul f32.const 1 f32.add f32.sqrt - local.get $3 + local.get $4 f32.add f32.div f32.add call $~lib/math/NativeMathf.log else - local.get $4 + local.get $3 i32.const 964689920 i32.ge_u if (result f32) - local.get $3 - local.get $3 - local.get $3 + local.get $4 + local.get $4 + local.get $4 f32.mul - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.const 1 f32.add f32.sqrt @@ -2294,7 +2282,7 @@ f32.add call $~lib/math/NativeMathf.log1p else - local.get $3 + local.get $4 end end end @@ -2306,9 +2294,9 @@ ) (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) (local $1 f64) - (local $2 f64) + (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f64) (local $5 f64) local.get $0 local.set $1 @@ -2319,7 +2307,7 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $3 + local.tee $2 i32.const 1141899264 i32.ge_u if @@ -2335,11 +2323,11 @@ f64.copysign return end - local.get $3 + local.get $2 i32.const 1071382528 i32.lt_u if - local.get $3 + local.get $2 i32.const 1044381696 i32.lt_u if @@ -2347,16 +2335,16 @@ return end i32.const -1 - local.set $4 + local.set $3 else local.get $0 f64.abs local.set $0 - local.get $3 + local.get $2 i32.const 1072889856 i32.lt_u if (result f64) - local.get $3 + local.get $2 i32.const 1072037888 i32.lt_u if (result f64) @@ -2371,7 +2359,7 @@ f64.div else i32.const 1 - local.set $4 + local.set $3 local.get $0 f64.const 1 f64.sub @@ -2381,12 +2369,12 @@ f64.div end else - local.get $3 + local.get $2 i32.const 1073971200 i32.lt_u if (result f64) i32.const 2 - local.set $4 + local.set $3 local.get $0 f64.const 1.5 f64.sub @@ -2398,7 +2386,7 @@ f64.div else i32.const 3 - local.set $4 + local.set $3 f64.const -1 local.get $0 f64.div @@ -2412,14 +2400,14 @@ local.tee $5 local.get $5 f64.mul - local.set $2 + local.set $4 local.get $0 local.get $5 - local.get $2 - local.get $2 - local.get $2 - local.get $2 - local.get $2 + 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 @@ -2437,11 +2425,11 @@ f64.const 0.3333333333333293 f64.add f64.mul - local.get $2 - local.get $2 - local.get $2 - local.get $2 - local.get $2 + 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 @@ -2458,13 +2446,13 @@ f64.mul f64.add f64.mul - local.set $2 - local.get $4 + local.set $4 + local.get $3 i32.const 0 i32.lt_s if local.get $0 - local.get $2 + local.get $4 f64.sub return end @@ -2474,11 +2462,11 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 + local.get $3 br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 end f64.const 0.4636476090008061 - local.get $2 + local.get $4 f64.const 2.2698777452961687e-17 f64.sub local.get $0 @@ -2488,7 +2476,7 @@ br $break|0 end f64.const 0.7853981633974483 - local.get $2 + local.get $4 f64.const 3.061616997868383e-17 f64.sub local.get $0 @@ -2498,7 +2486,7 @@ br $break|0 end f64.const 0.982793723247329 - local.get $2 + local.get $4 f64.const 1.3903311031230998e-17 f64.sub local.get $0 @@ -2508,7 +2496,7 @@ br $break|0 end f64.const 1.5707963267948966 - local.get $2 + local.get $4 f64.const 6.123233995736766e-17 f64.sub local.get $0 @@ -2525,9 +2513,9 @@ ) (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) (local $1 f32) - (local $2 f32) + (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 f32) local.get $0 local.set $1 @@ -2535,7 +2523,7 @@ i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $3 + local.tee $2 i32.const 1283457024 i32.ge_u if @@ -2551,11 +2539,11 @@ f32.copysign return end - local.get $3 + local.get $2 i32.const 1054867456 i32.lt_u if - local.get $3 + local.get $2 i32.const 964689920 i32.lt_u if @@ -2563,16 +2551,16 @@ return end i32.const -1 - local.set $4 + local.set $3 else local.get $0 f32.abs local.set $0 - local.get $3 + local.get $2 i32.const 1066926080 i32.lt_u if (result f32) - local.get $3 + local.get $2 i32.const 1060110336 i32.lt_u if (result f32) @@ -2587,7 +2575,7 @@ f32.div else i32.const 1 - local.set $4 + local.set $3 local.get $0 f32.const 1 f32.sub @@ -2597,12 +2585,12 @@ f32.div end else - local.get $3 + local.get $2 i32.const 1075576832 i32.lt_u if (result f32) i32.const 2 - local.set $4 + local.set $3 local.get $0 f32.const 1.5 f32.sub @@ -2614,7 +2602,7 @@ f32.div else i32.const 3 - local.set $4 + local.set $3 f32.const -1 local.get $0 f32.div @@ -2628,11 +2616,11 @@ local.tee $5 local.get $5 f32.mul - local.set $2 + local.set $4 local.get $0 local.get $5 - local.get $2 - local.get $2 + local.get $4 + local.get $4 f32.const 0.06168760731816292 f32.mul f32.const 0.14253635704517365 @@ -2641,8 +2629,8 @@ f32.const 0.333333283662796 f32.add f32.mul - local.get $2 - local.get $2 + local.get $4 + local.get $4 f32.const -0.106480173766613 f32.mul f32.const -0.19999158382415771 @@ -2650,13 +2638,13 @@ f32.mul f32.add f32.mul - local.set $2 - local.get $4 + local.set $4 + local.get $3 i32.const 0 i32.lt_s if local.get $0 - local.get $2 + local.get $4 f32.sub return end @@ -2666,11 +2654,11 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 + local.get $3 br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 end f32.const 0.46364760398864746 - local.get $2 + local.get $4 f32.const 5.01215824399992e-09 f32.sub local.get $0 @@ -2680,7 +2668,7 @@ br $break|0 end f32.const 0.7853981256484985 - local.get $2 + local.get $4 f32.const 3.774894707930798e-08 f32.sub local.get $0 @@ -2690,7 +2678,7 @@ br $break|0 end f32.const 0.9827936887741089 - local.get $2 + local.get $4 f32.const 3.447321716976148e-08 f32.sub local.get $0 @@ -2700,7 +2688,7 @@ br $break|0 end f32.const 1.570796251296997 - local.get $2 + local.get $4 f32.const 7.549789415861596e-08 f32.sub local.get $0 @@ -2833,61 +2821,53 @@ call $std/math/check ) (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - (local $4 f64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 i32) - (local $7 i32) - (local $8 i64) + (local $7 i64) + (local $8 i32) (local $9 i32) - (local $10 i32) - block $__inlined_func$~lib/math/NativeMath.atan2 - i32.const 1 + (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 - local.tee $4 - local.get $4 f64.ne local.get $1 local.get $1 f64.ne - select - if - local.get $1 - local.get $4 - f64.add - local.set $4 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $4 + i32.or + br_if $__inlined_func$~lib/math/NativeMath.atan2 + drop + local.get $0 i64.reinterpret_f64 - local.tee $8 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 local.set $9 - local.get $8 - i32.wrap_i64 local.get $1 i64.reinterpret_f64 - local.tee $8 + local.tee $7 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $5 - local.get $8 - i32.wrap_i64 - local.tee $10 - local.get $5 + local.tee $8 i32.const 1072693248 i32.sub + local.get $7 + i32.wrap_i64 + local.tee $6 i32.or i32.eqz if - local.get $4 + local.get $0 call $~lib/math/NativeMath.atan - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $5 + local.get $8 i32.const 30 i32.shr_u i32.const 2 @@ -2896,144 +2876,141 @@ i32.const 31 i32.shr_u i32.or - local.set $6 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 + local.set $4 local.get $9 i32.const 2147483647 i32.and - local.tee $7 + local.tee $9 + local.get $5 + i32.wrap_i64 i32.or i32.eqz if block $break|0 block $case3|0 block $case2|0 - local.get $6 - br_table $__inlined_func$~lib/math/NativeMath.atan2 $__inlined_func$~lib/math/NativeMath.atan2 $case2|0 $case3|0 $break|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 - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end f64.const -3.141592653589793 - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end end block $folding-inner0 - local.get $5 - local.get $10 + local.get $6 + local.get $8 + i32.const 2147483647 + i32.and + local.tee $8 i32.or i32.eqz br_if $folding-inner0 - local.get $5 + local.get $8 i32.const 2146435072 i32.eq if - local.get $7 + local.get $9 i32.const 2146435072 i32.eq if (result f64) f64.const 2.356194490192345 f64.const 0.7853981633974483 - local.get $6 + local.get $4 i32.const 2 i32.and select else f64.const 3.141592653589793 f64.const 0 - local.get $6 + local.get $4 i32.const 2 i32.and select end - local.tee $4 + local.tee $10 f64.neg + local.get $10 local.get $4 - local.get $6 i32.const 1 i32.and select - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end - i32.const 1 - local.get $7 + local.get $9 i32.const 2146435072 i32.eq - local.get $7 - local.get $5 + local.get $9 + local.get $8 i32.const 67108864 i32.add i32.gt_u - select + i32.or br_if $folding-inner0 - local.get $5 - local.get $7 + local.get $8 + local.get $9 i32.const 67108864 i32.add i32.gt_u i32.const 0 - local.get $6 + local.get $4 i32.const 2 i32.and select if (result f64) f64.const 0 else - local.get $4 + local.get $0 local.get $1 f64.div f64.abs call $~lib/math/NativeMath.atan end - local.set $4 + local.set $10 block $break|1 block $case3|1 block $case2|1 block $case1|1 block $case0|1 - local.get $6 + 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 $4 + local.get $10 f64.neg - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end f64.const 3.141592653589793 - local.get $4 + local.get $10 f64.const 1.2246467991473532e-16 f64.sub f64.sub - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $4 + local.get $10 f64.const 1.2246467991473532e-16 f64.sub f64.const 3.141592653589793 f64.sub - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end unreachable end f64.const -1.5707963267948966 f64.const 1.5707963267948966 - local.get $6 + local.get $4 i32.const 1 i32.and select - local.set $4 end - local.get $4 local.get $2 local.get $3 call $std/math/check @@ -3048,134 +3025,143 @@ i32.const 0 end ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) + (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) (local $4 i32) - block $folding-inner0 - i32.const 1 + (local $5 i32) + (local $6 i32) + block $__inlined_func$~lib/math/NativeMathf.atan2 (result f32) + local.get $1 + local.get $0 + f32.add local.get $0 local.get $0 f32.ne local.get $1 local.get $1 f32.ne - select - if - local.get $1 - local.get $0 - f32.add - return - end - local.get $0 - i32.reinterpret_f32 - local.set $3 + i32.or + br_if $__inlined_func$~lib/math/NativeMathf.atan2 + drop local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $5 i32.const 1065353216 i32.eq if local.get $0 call $~lib/math/NativeMathf.atan - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end - local.get $4 + local.get $5 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $3 + local.get $0 + i32.reinterpret_f32 + local.tee $6 i32.const 31 i32.shr_u i32.or - local.set $2 - local.get $4 - i32.const 2147483647 - i32.and local.set $4 - local.get $3 + local.get $6 i32.const 2147483647 i32.and - local.tee $3 + local.tee $6 i32.eqz if block $break|0 block $case3|0 block $case2|0 block $case1|0 - local.get $2 + local.get $4 br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 end local.get $0 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end f32.const 3.1415927410125732 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end f32.const -3.1415927410125732 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end end + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 local.get $4 + i32.const 1 + i32.and + select + local.get $5 + i32.const 2147483647 + i32.and + local.tee $5 i32.eqz - br_if $folding-inner0 - local.get $4 + br_if $__inlined_func$~lib/math/NativeMathf.atan2 + drop + local.get $5 i32.const 2139095040 i32.eq if - local.get $3 + local.get $6 i32.const 2139095040 i32.eq if (result f32) f32.const 2.356194496154785 f32.const 0.7853981852531433 - local.get $2 + local.get $4 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $4 i32.const 1 i32.and select else f32.const 3.1415927410125732 f32.const 0 - local.get $2 + local.get $4 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $4 i32.const 1 i32.and select end - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 + local.get $4 i32.const 1 - local.get $3 + i32.and + select + local.get $6 i32.const 2139095040 i32.eq - local.get $3 - local.get $4 + local.get $6 + local.get $5 i32.const 218103808 i32.add i32.gt_u - select - br_if $folding-inner0 - local.get $4 - local.get $3 + i32.or + br_if $__inlined_func$~lib/math/NativeMathf.atan2 + drop + local.get $5 + local.get $6 i32.const 218103808 i32.add i32.gt_u i32.const 0 - local.get $2 + local.get $4 i32.const 2 i32.and select @@ -3194,68 +3180,46 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $2 + local.get $4 br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 end local.get $0 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end local.get $0 f32.neg - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end f32.const 3.1415927410125732 local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.sub - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.const 3.1415927410125732 f32.sub - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end unreachable end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 local.get $2 - i32.const 1 - i32.and - select + local.get $3 + call $std/math/check ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) + (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 2146435072 - i32.ge_u - if + (local $5 f64) + (local $6 f64) + block $__inlined_func$~lib/math/NativeMath.cbrt (result f64) local.get $0 local.get $0 f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) local.get $0 - f64.const 18014398509481984 - f64.mul i64.reinterpret_f64 local.tee $4 i64.const 32 @@ -3263,97 +3227,128 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $2 - i32.eqz - if + local.tee $3 + i32.const 2146435072 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMath.cbrt + drop + local.get $3 + i32.const 1048576 + i32.lt_u + if (result i32) local.get $0 - return + local.get $0 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $3 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.cbrt + drop + local.get $3 + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + else + local.get $3 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add end + local.set $3 + local.get $4 + i64.const -9223372036854775808 + i64.and + local.get $3 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $5 + local.get $5 + f64.mul + local.get $5 + local.get $0 + f64.div + f64.mul + local.set $6 + local.get $0 + local.get $5 + 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 $5 + local.get $5 + f64.mul + f64.div + local.set $6 + local.get $5 + local.get $5 + local.get $6 + local.get $5 + f64.sub + local.get $5 + local.get $5 + f64.add + local.get $6 + f64.add + f64.div + f64.mul + f64.add + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/Math/cbrt + local.get $1 local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add + call $std/math/check else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add + i32.const 0 end - local.set $2 - local.get $4 - i64.const -9223372036854775808 - i64.and - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $1 - local.get $0 - local.get $3 - local.get $1 - local.get $1 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.get $1 - f64.const 0.14599619288661245 - f64.mul - f64.const -0.758397934778766 - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $1 - local.get $1 - f64.mul - f64.div - local.set $0 - local.get $1 - local.get $1 - local.get $0 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.add - local.get $0 - f64.add - f64.div - f64.mul - f64.add ) (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 f64) - (local $7 i32) + (local $7 f64) (local $8 f64) block $__inlined_func$~lib/math/NativeMathf.cbrt (result f32) local.get $0 @@ -3361,20 +3356,20 @@ f32.add local.get $0 i32.reinterpret_f32 - local.tee $7 + local.tee $5 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 2139095040 i32.ge_u br_if $__inlined_func$~lib/math/NativeMathf.cbrt drop - local.get $5 + local.get $4 i32.const 8388608 i32.lt_u if (result i32) local.get $0 - local.get $5 + local.get $4 i32.eqz br_if $__inlined_func$~lib/math/NativeMathf.cbrt drop @@ -3382,7 +3377,7 @@ f32.const 16777216 f32.mul i32.reinterpret_f32 - local.tee $7 + local.tee $5 i32.const 2147483647 i32.and i32.const 3 @@ -3390,13 +3385,13 @@ i32.const 642849266 i32.add else - local.get $5 + local.get $4 i32.const 3 i32.div_u i32.const 709958130 i32.add end - local.get $7 + local.get $5 i32.const -2147483648 i32.and i32.or @@ -3407,38 +3402,38 @@ f64.mul local.get $3 f64.mul - local.set $4 + local.set $6 local.get $3 local.get $0 f64.promote_f32 - local.tee $6 - local.get $6 + local.tee $7 + local.get $7 f64.add - local.tee $8 - local.get $4 + local.tee $3 + local.get $6 f64.add f64.mul + local.get $7 local.get $6 - local.get $4 f64.add - local.get $4 + local.get $6 f64.add f64.div - local.tee $3 - local.get $3 + local.tee $8 + local.get $8 f64.mul - local.get $3 + local.get $8 f64.mul - local.set $4 - local.get $3 + local.set $6 local.get $8 - local.get $4 + local.get $3 + local.get $6 f64.add f64.mul + local.get $7 local.get $6 - local.get $4 f64.add - local.get $4 + local.get $6 f64.add f64.div f32.demote_f64 @@ -3451,15 +3446,15 @@ (local $1 i64) (local $2 i64) (local $3 i64) - (local $4 i64) - (local $5 i64) + (local $4 i32) + (local $5 f64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i64) (local $9 i64) (local $10 i64) (local $11 i64) - (local $12 f64) + (local $12 i64) local.get $0 i64.const 9223372036854775807 i64.and @@ -3467,11 +3462,11 @@ i64.shr_u i64.const 1045 i64.sub - local.tee $3 + local.tee $1 i64.const 63 i64.and - local.set $4 - local.get $3 + local.set $6 + local.get $1 i64.const 6 i64.shr_s i32.wrap_i64 @@ -3479,44 +3474,44 @@ i32.shl i32.const 5440 i32.add - local.tee $7 + local.tee $4 i64.load - local.set $5 - local.get $7 - i64.load offset=8 local.set $3 - local.get $7 + local.get $4 + i64.load offset=8 + local.set $2 + local.get $4 i64.load offset=16 local.set $1 - local.get $4 + local.get $6 i64.const 0 i64.ne if - local.get $5 - local.get $4 - i64.shl local.get $3 + local.get $6 + i64.shl + local.get $2 i64.const 64 - local.get $4 + local.get $6 i64.sub - local.tee $2 + local.tee $7 i64.shr_u i64.or - local.set $5 - local.get $3 - local.get $4 + local.set $3 + local.get $2 + local.get $6 i64.shl local.get $1 - local.get $2 + local.get $7 i64.shr_u i64.or - local.set $3 + local.set $2 local.get $1 - local.get $4 + local.get $6 i64.shl - local.get $7 + local.get $4 i64.load offset=24 - local.get $2 + local.get $7 i64.shr_u i64.or local.set $1 @@ -3526,42 +3521,42 @@ i64.and i64.const 4503599627370496 i64.or - local.tee $4 + local.tee $6 i64.const 4294967295 i64.and - local.tee $2 - local.get $3 + local.tee $7 + local.get $2 i64.const 32 i64.shr_u local.tee $8 i64.mul local.get $2 - local.get $3 i64.const 4294967295 i64.and local.tee $2 + local.get $7 i64.mul - local.tee $6 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.set $3 + local.set $9 local.get $2 - local.get $4 + local.get $6 i64.const 32 i64.shr_u - local.tee $9 local.tee $10 + local.tee $11 i64.mul - local.get $3 + local.get $9 i64.const 4294967295 i64.and i64.add local.set $2 local.get $8 - local.get $10 + local.get $11 i64.mul - local.get $3 + local.get $9 i64.const 32 i64.shr_u i64.add @@ -3573,10 +3568,10 @@ local.get $1 i64.const 32 i64.shr_u - local.get $9 + local.get $10 i64.mul - local.tee $3 - local.get $6 + local.tee $1 + local.get $7 i64.const 4294967295 i64.and local.get $2 @@ -3584,120 +3579,120 @@ i64.shl i64.add i64.add - local.tee $1 - local.get $3 + local.tee $2 + local.get $1 i64.lt_u i64.extend_i32_u global.get $~lib/math/res128_hi - local.get $4 - local.get $5 + local.get $3 + local.get $6 i64.mul i64.add i64.add - local.tee $8 + local.tee $3 i64.const 2 i64.shl - local.get $1 + local.get $2 i64.const 62 i64.shr_u i64.or - local.tee $5 + local.tee $6 i64.const 63 i64.shr_s - local.tee $4 + local.tee $7 i64.const 1 i64.shr_s - local.get $5 + local.get $6 i64.xor - local.tee $2 + local.tee $1 i64.clz - local.set $3 - local.get $2 - local.get $3 - i64.shl - local.get $4 + local.set $8 local.get $1 + local.get $8 + i64.shl + local.get $7 + local.get $2 i64.const 2 i64.shl i64.xor - local.tee $6 + local.tee $2 i64.const 64 - local.get $3 + local.get $8 i64.sub i64.shr_u i64.or - local.tee $1 + local.tee $9 i64.const 4294967295 i64.and - local.set $2 - local.get $1 + local.set $1 + local.get $9 i64.const 32 i64.shr_u local.tee $10 i64.const 560513588 i64.mul - local.get $2 + local.get $1 i64.const 3373259426 i64.mul - local.get $2 + local.get $1 i64.const 560513588 i64.mul - local.tee $9 + local.tee $11 i64.const 32 i64.shr_u i64.add - local.tee $11 + local.tee $12 i64.const 4294967295 i64.and i64.add - local.set $2 + local.set $1 local.get $10 i64.const 3373259426 i64.mul - local.get $11 + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $1 i64.const 32 i64.shr_u i64.add global.set $~lib/math/res128_hi - local.get $9 + local.get $11 i64.const 4294967295 i64.and - local.get $2 + local.get $1 i64.const 32 i64.shl i64.add - local.tee $2 - local.get $1 + local.tee $1 + local.get $9 f64.convert_i64_u f64.const 3.753184150245214e-04 f64.mul - local.get $6 - local.get $3 + local.get $2 + local.get $8 i64.shl f64.convert_i64_u f64.const 3.834951969714103e-04 f64.mul f64.add i64.trunc_f64_u - local.tee $1 + local.tee $2 i64.lt_u i64.extend_i32_u global.get $~lib/math/res128_hi - local.tee $6 + local.tee $9 i64.const 11 i64.shr_u i64.add f64.convert_i64_u global.set $~lib/math/rempio2_y0 - local.get $1 - local.get $6 + local.get $2 + local.get $9 i64.const 53 i64.shl - local.get $2 + local.get $1 i64.const 11 i64.shr_u i64.or @@ -3708,28 +3703,28 @@ global.set $~lib/math/rempio2_y1 global.get $~lib/math/rempio2_y0 i64.const 4372995238176751616 - local.get $3 + local.get $8 i64.const 52 i64.shl i64.sub local.get $0 - local.get $5 + local.get $6 i64.xor i64.const -9223372036854775808 i64.and i64.or f64.reinterpret_i64 - local.tee $12 + local.tee $5 f64.mul global.set $~lib/math/rempio2_y0 global.get $~lib/math/rempio2_y1 - local.get $12 + local.get $5 f64.mul global.set $~lib/math/rempio2_y1 - local.get $8 + local.get $3 i64.const 62 i64.shr_s - local.get $4 + local.get $7 i64.sub i32.wrap_i64 ) @@ -3737,10 +3732,10 @@ (local $1 f64) (local $2 i64) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 f64) (local $9 f64) local.get $0 @@ -3749,18 +3744,18 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 31 i32.shr_u local.set $6 - local.get $5 + local.get $4 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1072243195 i32.le_u if - local.get $5 + local.get $4 i32.const 1044816030 i32.lt_u if @@ -3770,26 +3765,26 @@ local.get $0 local.get $0 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul - local.set $4 + local.set $3 f64.const 1 - local.get $3 + local.get $1 f64.const 0.5 f64.mul - local.tee $1 + local.tee $7 f64.sub local.tee $8 f64.const 1 local.get $8 f64.sub - local.get $1 + local.get $7 f64.sub - local.get $3 - local.get $3 - local.get $3 - local.get $3 + local.get $1 + local.get $1 + local.get $1 + local.get $1 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -3798,11 +3793,11 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $4 - local.get $4 - f64.mul local.get $3 local.get $3 + f64.mul + local.get $1 + local.get $1 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -3821,7 +3816,7 @@ f64.add return end - local.get $5 + local.get $4 i32.const 2146435072 i32.ge_u if @@ -3837,26 +3832,26 @@ 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 $5 + local.set $4 local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $3 + local.set $0 i32.const -1 - local.set $5 - local.get $7 + local.set $4 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -3864,14 +3859,14 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.add - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.add local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -3881,13 +3876,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $3 - local.get $7 + local.set $0 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -3895,14 +3890,14 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.sub - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.sub local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -3912,28 +3907,28 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $5 + local.get $4 br $~lib/math/rempio2|inlined.0 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 $6 + local.tee $4 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $7 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $7 f64.const 6.077100506506192e-11 f64.mul local.tee $3 @@ -3951,12 +3946,12 @@ i32.const 16 i32.gt_u if - local.get $4 + local.get $7 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 6.077100506303966e-11 f64.mul local.tee $1 @@ -3967,7 +3962,7 @@ f64.sub f64.sub local.set $3 - local.get $6 + local.get $4 local.get $0 local.get $3 f64.sub @@ -3984,12 +3979,12 @@ i32.const 49 i32.gt_u if (result f64) - local.get $4 + local.get $7 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 2.0222662487111665e-21 f64.mul local.tee $1 @@ -4016,41 +4011,41 @@ local.get $3 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $7 i32.trunc_f64_s br $~lib/math/rempio2|inlined.0 end i32.const 0 local.get $2 call $~lib/math/pio2_large_quot - local.tee $5 + local.tee $4 i32.sub - local.get $5 + local.get $4 local.get $6 select end - local.set $6 + local.set $4 global.get $~lib/math/rempio2_y0 - local.set $3 + local.set $1 global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 + local.set $3 + local.get $4 i32.const 1 i32.and if (result f64) - local.get $3 - local.get $3 + local.get $1 + local.get $1 f64.mul local.tee $0 - local.get $3 + local.get $1 f64.mul - local.set $1 - local.get $3 + local.set $7 + local.get $1 local.get $0 - local.get $4 + local.get $3 f64.const 0.5 f64.mul - local.get $1 + local.get $7 local.get $0 local.get $0 f64.const 2.7557313707070068e-06 @@ -4075,37 +4070,37 @@ f64.mul f64.sub f64.mul - local.get $4 + local.get $3 f64.sub - local.get $1 + local.get $7 f64.const -0.16666666666666632 f64.mul f64.sub f64.sub else - local.get $3 - local.get $3 + local.get $1 + local.get $1 f64.mul - local.tee $0 - local.get $0 + local.tee $7 + local.get $7 f64.mul - local.set $1 + local.set $8 f64.const 1 - local.get $0 + local.get $7 f64.const 0.5 f64.mul - local.tee $8 + local.tee $0 f64.sub local.tee $9 f64.const 1 local.get $9 f64.sub - local.get $8 - f64.sub - local.get $0 - local.get $0 - local.get $0 local.get $0 + f64.sub + local.get $7 + local.get $7 + local.get $7 + local.get $7 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -4114,11 +4109,11 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $1 - local.get $1 + local.get $8 + local.get $8 f64.mul - local.get $0 - local.get $0 + local.get $7 + local.get $7 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -4129,8 +4124,8 @@ f64.mul f64.add f64.mul + local.get $1 local.get $3 - local.get $4 f64.mul f64.sub f64.add @@ -4139,7 +4134,7 @@ local.tee $0 f64.neg local.get $0 - local.get $6 + local.get $4 i32.const 1 i32.add i32.const 2 @@ -4148,29 +4143,29 @@ ) (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) (local $1 i32) - (local $2 i32) - (local $3 i64) + (local $2 f64) + (local $3 f64) (local $4 i64) (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) + (local $6 f64) + (local $7 i32) + (local $8 i64) + (local $9 i64) block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $5 i32.const 31 i32.shr_u - local.set $5 - local.get $1 + local.set $1 + local.get $5 i32.const 2147483647 i32.and - local.tee $2 + local.tee $5 i32.const 1061752794 i32.le_u if - local.get $2 + local.get $5 i32.const 964689920 i32.lt_u if @@ -4179,53 +4174,53 @@ end local.get $0 f64.promote_f32 - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $9 + local.set $2 br $folding-inner0 end - local.get $2 + local.get $5 i32.const 1081824209 i32.le_u if - local.get $2 + local.get $5 i32.const 1075235811 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 3.141592653589793 f64.add - local.get $9 + local.get $2 f64.const 3.141592653589793 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.set $9 - local.get $8 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $9 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $9 - local.get $8 + local.get $3 + local.get $2 f64.mul - local.get $8 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4236,46 +4231,46 @@ f32.neg return else - local.get $5 + local.get $1 if (result f64) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul else f64.const 1.5707963267948966 local.get $0 f64.promote_f32 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul end - local.set $9 - local.get $8 - local.get $9 - local.get $7 + local.set $6 + local.get $3 + local.get $6 + local.get $2 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $9 - local.get $7 - local.get $7 + local.get $6 + local.get $2 + local.get $2 f64.mul f64.mul - local.get $7 + local.get $2 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4287,74 +4282,74 @@ end unreachable end - local.get $2 + local.get $5 i32.const 1088565717 i32.le_u if - local.get $2 + local.get $5 i32.const 1085271519 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 6.283185307179586 f64.add - local.get $9 + local.get $2 f64.const 6.283185307179586 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $9 + local.set $2 br $folding-inner0 else - local.get $5 + local.get $1 if (result f64) local.get $0 f32.neg f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul else local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul end - local.set $9 - local.get $8 - local.get $9 - local.get $7 + local.set $6 + local.get $3 + local.get $6 + local.get $2 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $9 - local.get $7 - local.get $7 + local.get $6 + local.get $2 + local.get $2 f64.mul f64.mul - local.get $7 + local.get $2 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4366,7 +4361,7 @@ end unreachable end - local.get $2 + local.get $5 i32.const 2139095040 i32.ge_u if @@ -4376,93 +4371,93 @@ return end block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $2 - local.tee $1 + local.get $5 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $8 - local.get $9 - local.get $8 + local.set $3 + local.get $2 + local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $8 + local.get $3 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $8 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.0 end - local.get $1 + local.get $5 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $2 + local.tee $7 i32.const 63 i32.and i64.extend_i32_s - local.set $6 + 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 $9 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $1 + local.get $5 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s local.tee $4 - local.get $2 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $2 + local.get $7 i64.load - local.get $6 + local.get $8 i64.shl - local.get $2 - i64.load offset=8 - local.tee $3 + local.get $9 i64.const 64 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or i64.mul - local.get $6 + local.get $8 i64.const 32 i64.gt_u if (result i64) - local.get $3 - local.get $6 + local.get $9 + local.get $8 i64.const 32 i64.sub i64.shl - local.get $2 + local.get $7 i64.load offset=16 i64.const 96 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or else - local.get $3 + local.get $9 i64.const 32 - local.get $6 + local.get $8 i64.sub i64.shr_u end @@ -4474,7 +4469,7 @@ local.tee $4 i64.const 2 i64.shl - local.tee $6 + local.tee $8 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y @@ -4482,45 +4477,45 @@ local.get $4 i64.const 62 i64.shr_u - local.get $6 + local.get $8 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $1 + local.tee $5 i32.sub - local.get $1 local.get $5 + local.get $1 select end local.set $1 global.get $~lib/math/rempio2f_y - local.set $9 + local.set $2 local.get $1 i32.const 1 i32.and if (result f32) - local.get $9 - local.get $9 - local.get $9 + local.get $2 + local.get $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $3 + local.get $2 f64.mul - local.tee $8 - local.get $7 + local.tee $2 + local.get $3 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $8 - local.get $7 - local.get $7 + local.get $2 + local.get $3 + local.get $3 f64.mul f64.mul - local.get $7 + local.get $3 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4529,26 +4524,26 @@ f64.add f32.demote_f64 else - local.get $9 - local.get $9 + local.get $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.set $9 - local.get $8 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $9 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $9 - local.get $8 + local.get $3 + local.get $2 f64.mul - local.get $8 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4568,19 +4563,19 @@ select return end - local.get $8 + local.get $3 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $9 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $9 - local.get $8 + local.get $2 + local.get $3 f64.mul - local.get $8 + local.get $3 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4590,29 +4585,29 @@ f32.demote_f64 ) (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) - (local $1 f64) + (local $1 i32) (local $2 f64) (local $3 i32) - (local $4 f64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 f64) - (local $7 i32) - (local $8 i64) + (local $7 f64) + (local $8 f64) local.get $0 i64.reinterpret_f64 - local.tee $8 + local.tee $5 i64.const 32 i64.shr_u i64.const 2147483647 i64.and i32.wrap_i64 - local.set $5 - local.get $8 + local.set $3 + local.get $5 i64.const 63 i64.shr_u i32.wrap_i64 - local.set $7 - local.get $5 + local.set $4 + local.get $3 i32.const 1078159482 i32.ge_u if @@ -4623,7 +4618,7 @@ local.get $0 return end - local.get $7 + local.get $4 if f64.const -1 return @@ -4638,13 +4633,13 @@ return end end - local.get $5 + local.get $3 i32.const 1071001154 i32.gt_u if local.get $0 i32.const 1 - local.get $7 + local.get $4 i32.const 1 i32.shl i32.sub @@ -4656,30 +4651,30 @@ f64.copysign f64.add i32.trunc_f64_s - local.get $5 + local.get $3 i32.const 1072734898 i32.lt_u select - local.tee $3 - f64.convert_i32_s local.tee $1 + f64.convert_i32_s + local.tee $0 f64.const 0.6931471803691238 f64.mul f64.sub - local.tee $4 - local.get $4 - local.get $1 + local.tee $2 + local.get $2 + local.get $0 f64.const 1.9082149292705877e-10 f64.mul - local.tee $1 + local.tee $2 f64.sub local.tee $0 f64.sub - local.get $1 + local.get $2 f64.sub - local.set $4 + local.set $2 else - local.get $5 + local.get $3 i32.const 1016070144 i32.lt_u if @@ -4691,26 +4686,26 @@ local.get $0 f64.const 0.5 f64.mul - local.tee $2 + local.tee $7 f64.mul - local.tee $1 - local.get $1 + local.tee $6 + local.get $6 f64.mul - local.set $6 + local.set $8 f64.const 3 - local.get $1 + local.get $6 f64.const -0.03333333333333313 f64.mul f64.const 1 f64.add + local.get $8 local.get $6 - local.get $1 f64.const -7.93650757867488e-05 f64.mul f64.const 1.5873015872548146e-03 f64.add + local.get $8 local.get $6 - local.get $1 f64.const -2.0109921818362437e-07 f64.mul f64.const 4.008217827329362e-06 @@ -4719,51 +4714,51 @@ f64.add f64.mul f64.add - local.tee $6 - local.get $2 + local.tee $8 + local.get $7 f64.mul f64.sub - local.set $2 - local.get $1 + local.set $7 local.get $6 - local.get $2 + local.get $8 + local.get $7 f64.sub f64.const 6 local.get $0 - local.get $2 + local.get $7 f64.mul f64.sub f64.div f64.mul - local.set $2 - local.get $3 + local.set $7 + local.get $1 i32.eqz if local.get $0 local.get $0 - local.get $2 + local.get $7 f64.mul - local.get $1 + local.get $6 f64.sub f64.sub return end local.get $0 + local.get $7 local.get $2 - local.get $4 f64.sub f64.mul - local.get $4 + local.get $2 f64.sub - local.get $1 + local.get $6 f64.sub - local.set $1 - local.get $3 + local.set $2 + local.get $1 i32.const -1 i32.eq if local.get $0 - local.get $1 + local.get $2 f64.sub f64.const 0.5 f64.mul @@ -4771,7 +4766,7 @@ f64.sub return end - local.get $3 + local.get $1 i32.const 1 i32.eq if @@ -4779,7 +4774,7 @@ f64.const -0.25 f64.lt if - local.get $1 + local.get $2 local.get $0 f64.const 0.5 f64.add @@ -4789,7 +4784,7 @@ return end local.get $0 - local.get $1 + local.get $2 f64.sub f64.const 2 f64.mul @@ -4797,25 +4792,24 @@ f64.add return end - local.get $3 + local.get $1 i64.extend_i32_s i64.const 1023 i64.add i64.const 52 i64.shl f64.reinterpret_i64 - local.set $4 - i32.const 1 - local.get $3 - i32.const 56 - i32.gt_s - local.get $3 + local.set $6 + local.get $1 i32.const 0 i32.lt_s - select + local.get $1 + i32.const 56 + i32.gt_s + i32.or if local.get $0 - local.get $1 + local.get $2 f64.sub f64.const 1 f64.add @@ -4825,9 +4819,9 @@ f64.const 8988465674311579538646525e283 f64.mul local.get $0 - local.get $4 + local.get $6 f64.mul - local.get $3 + local.get $1 i32.const 1024 i32.eq select @@ -4838,43 +4832,42 @@ local.get $0 f64.const 1 i64.const 1023 - local.get $3 + local.get $1 i64.extend_i32_s i64.sub i64.const 52 i64.shl f64.reinterpret_i64 - local.tee $2 + local.tee $0 f64.sub - local.get $1 + local.get $2 f64.sub f64.const 1 - local.get $1 local.get $2 + local.get $0 f64.add f64.sub - local.get $3 + local.get $1 i32.const 20 i32.lt_s select f64.add - local.get $4 + local.get $6 f64.mul ) (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) (local $1 i32) - (local $2 f64) - (local $3 i64) + (local $2 i64) + (local $3 i32) (local $4 f64) - (local $5 i64) - (local $6 f64) - (local $7 i32) + (local $5 f64) + (local $6 i64) + (local $7 f64) (local $8 f64) block $~lib/util/math/exp_lut|inlined.0 (result f64) local.get $0 - local.tee $2 i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 52 i64.shr_u i64.const 2047 @@ -4899,12 +4892,12 @@ i32.ge_u if f64.const 0 - local.get $3 + local.get $2 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp_lut|inlined.0 drop - local.get $2 + local.get $0 f64.const 1 f64.add local.get $1 @@ -4914,7 +4907,7 @@ drop f64.const 0 f64.const inf - local.get $3 + local.get $2 i64.const 63 i64.shr_u i32.wrap_i64 @@ -4924,14 +4917,14 @@ i32.const 0 local.set $1 end - local.get $2 + local.get $0 f64.const 184.6649652337873 f64.mul f64.const 6755399441055744 f64.add - local.tee $0 + local.tee $4 i64.reinterpret_f64 - local.tee $5 + local.tee $6 i64.const 127 i64.and i64.const 1 @@ -4941,15 +4934,15 @@ i32.shl i32.const 5664 i32.add - local.tee $7 + local.tee $3 i64.load offset=8 - local.get $5 + local.get $6 i64.const 45 i64.shl i64.add - local.set $3 - local.get $2 + local.set $2 local.get $0 + local.get $4 f64.const 6755399441055744 f64.sub local.tee $0 @@ -4963,12 +4956,12 @@ local.tee $0 local.get $0 f64.mul - local.set $2 - local.get $7 + local.set $4 + local.get $3 f64.load local.get $0 f64.add - local.get $2 + local.get $4 local.get $0 f64.const 0.16666666666665886 f64.mul @@ -4976,8 +4969,8 @@ f64.add f64.mul f64.add - local.get $2 - local.get $2 + local.get $4 + local.get $4 f64.mul local.get $0 f64.const 0.008333335853059549 @@ -4986,128 +4979,128 @@ f64.add f64.mul f64.add - local.set $0 + local.set $4 local.get $1 i32.eqz if block $~lib/util/math/specialcase|inlined.0 (result f64) - local.get $5 + local.get $6 i64.const 2147483648 i64.and i64.eqz if - local.get $3 + local.get $2 i64.const 4544132024016830464 i64.sub f64.reinterpret_i64 - local.tee $2 - local.get $2 + local.tee $0 local.get $0 + local.get $4 f64.mul f64.add f64.const 5486124068793688683255936e279 f64.mul br $~lib/util/math/specialcase|inlined.0 end - local.get $3 + local.get $2 i64.const 4602678819172646912 i64.add - local.tee $3 + local.tee $2 f64.reinterpret_i64 - local.tee $4 + local.tee $7 + local.get $7 local.get $4 - local.get $0 f64.mul f64.add - local.tee $2 + local.tee $5 f64.abs f64.const 1 f64.lt if (result f64) f64.const 1 - local.get $2 + local.get $5 f64.copysign - local.tee $6 - local.get $2 - f64.add local.tee $8 - local.get $6 + local.get $5 + f64.add + local.tee $0 local.get $8 + local.get $0 f64.sub - local.get $2 + local.get $5 f64.add - local.get $4 - local.get $2 + local.get $7 + local.get $5 f64.sub + local.get $7 local.get $4 - local.get $0 f64.mul f64.add f64.add f64.add - local.get $6 + local.get $8 f64.sub - local.tee $2 + local.tee $0 f64.const 0 f64.eq if (result f64) - local.get $3 + local.get $2 i64.const -9223372036854775808 i64.and f64.reinterpret_i64 else - local.get $2 + local.get $0 end else - local.get $2 + local.get $5 end f64.const 2.2250738585072014e-308 f64.mul end br $~lib/util/math/exp_lut|inlined.0 end - local.get $3 - f64.reinterpret_i64 - local.tee $2 local.get $2 + f64.reinterpret_i64 + local.tee $0 local.get $0 + local.get $4 f64.mul f64.add end ) (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) + (local $3 i32) + (local $4 i64) + (local $5 f64) block $__inlined_func$~lib/math/NativeMath.cosh (result f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $5 + local.tee $4 f64.reinterpret_i64 - local.set $3 - local.get $5 + local.set $5 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 1072049730 i32.lt_u if f64.const 1 - local.get $4 + local.get $3 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.cosh drop - local.get $3 + local.get $5 call $~lib/math/NativeMath.expm1 - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 f64.mul - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add f64.const 2 f64.add @@ -5116,22 +5109,22 @@ f64.add br $__inlined_func$~lib/math/NativeMath.cosh end - local.get $4 + local.get $3 i32.const 1082535490 i32.lt_u if - local.get $3 + local.get $5 call $~lib/math/NativeMath.exp - local.tee $3 + local.tee $5 f64.const 1 - local.get $3 + local.get $5 f64.div f64.add f64.const 0.5 f64.mul br $__inlined_func$~lib/math/NativeMath.cosh end - local.get $3 + local.get $5 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp @@ -5154,40 +5147,40 @@ end ) (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 f32) + (local $1 i32) (local $2 f32) (local $3 i32) (local $4 f32) (local $5 i32) - (local $6 i32) + (local $6 f32) (local $7 f32) local.get $0 i32.reinterpret_f32 - local.tee $6 + local.tee $5 i32.const 2147483647 i32.and - local.set $5 - local.get $6 + local.set $3 + local.get $5 i32.const 31 i32.shr_u - local.set $6 - local.get $5 + local.set $5 + local.get $3 i32.const 1100331076 i32.ge_u if - local.get $5 + local.get $3 i32.const 2139095040 i32.gt_u if local.get $0 return end - local.get $6 + local.get $5 if f32.const -1 return end - local.get $5 + local.get $3 i32.const 1118925335 i32.gt_u if @@ -5197,13 +5190,13 @@ return end end - local.get $5 + local.get $3 i32.const 1051816472 i32.gt_u if local.get $0 i32.const 1 - local.get $6 + local.get $5 i32.const 1 i32.shl i32.sub @@ -5215,30 +5208,30 @@ f32.copysign f32.add i32.trunc_f32_s - local.get $5 + local.get $3 i32.const 1065686418 i32.lt_u select - local.tee $3 - f32.convert_i32_s local.tee $1 + f32.convert_i32_s + local.tee $0 f32.const 0.6931381225585938 f32.mul f32.sub - local.tee $4 - local.get $4 - local.get $1 + local.tee $2 + local.get $2 + local.get $0 f32.const 9.05800061445916e-06 f32.mul - local.tee $1 + local.tee $2 f32.sub local.tee $0 f32.sub - local.get $1 + local.get $2 f32.sub - local.set $4 + local.set $2 else - local.get $5 + local.get $3 i32.const 855638016 i32.lt_u if @@ -5251,10 +5244,10 @@ local.get $0 f32.const 0.5 f32.mul - local.tee $2 + local.tee $6 f32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 f32.const 1.5807170420885086e-03 f32.mul f32.const -0.03333321213722229 @@ -5263,50 +5256,50 @@ f32.const 1 f32.add local.tee $7 - local.get $2 + local.get $6 f32.mul f32.sub - local.set $2 - local.get $1 + local.set $6 + local.get $4 local.get $7 - local.get $2 + local.get $6 f32.sub f32.const 6 local.get $0 - local.get $2 + local.get $6 f32.mul f32.sub f32.div f32.mul - local.set $2 - local.get $3 + local.set $6 + local.get $1 i32.eqz if local.get $0 local.get $0 - local.get $2 + local.get $6 f32.mul - local.get $1 + local.get $4 f32.sub f32.sub return end local.get $0 + local.get $6 local.get $2 - local.get $4 f32.sub f32.mul + local.get $2 + f32.sub local.get $4 f32.sub + local.set $2 local.get $1 - f32.sub - local.set $1 - local.get $3 i32.const -1 i32.eq if local.get $0 - local.get $1 + local.get $2 f32.sub f32.const 0.5 f32.mul @@ -5314,7 +5307,7 @@ f32.sub return end - local.get $3 + local.get $1 i32.const 1 i32.eq if @@ -5322,7 +5315,7 @@ f32.const -0.25 f32.lt if - local.get $1 + local.get $2 local.get $0 f32.const 0.5 f32.add @@ -5332,7 +5325,7 @@ return end local.get $0 - local.get $1 + local.get $2 f32.sub f32.const 2 f32.mul @@ -5340,24 +5333,23 @@ f32.add return end - local.get $3 + local.get $1 i32.const 127 i32.add i32.const 23 i32.shl f32.reinterpret_i32 local.set $4 - i32.const 1 - local.get $3 - i32.const 56 - i32.gt_s - local.get $3 + local.get $1 i32.const 0 i32.lt_s - select + local.get $1 + i32.const 56 + i32.gt_s + i32.or if local.get $0 - local.get $1 + local.get $2 f32.sub f32.const 1 f32.add @@ -5369,7 +5361,7 @@ local.get $0 local.get $4 f32.mul - local.get $3 + local.get $1 i32.const 128 i32.eq select @@ -5380,21 +5372,21 @@ local.get $0 f32.const 1 i32.const 127 - local.get $3 + local.get $1 i32.sub i32.const 23 i32.shl f32.reinterpret_i32 - local.tee $2 + local.tee $0 f32.sub - local.get $1 + local.get $2 f32.sub f32.const 1 - local.get $1 local.get $2 + local.get $0 f32.add f32.sub - local.get $3 + local.get $1 i32.const 20 i32.lt_s select @@ -5409,8 +5401,6 @@ (local $4 i32) (local $5 f64) block $~lib/util/math/expf_lut|inlined.0 (result f32) - local.get $0 - f64.promote_f32 local.get $0 i32.reinterpret_f32 local.tee $3 @@ -5451,6 +5441,8 @@ br_if $~lib/util/math/expf_lut|inlined.0 drop end + local.get $0 + f64.promote_f32 f64.const 46.16624130844683 f64.mul local.tee $1 @@ -5562,18 +5554,17 @@ ) (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 i32) - (local $4 f64) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 f64) (local $7 f64) (local $8 i64) - (local $9 i32) + (local $9 f64) (local $10 f64) block $~lib/util/math/exp2_lut|inlined.0 (result f64) local.get $0 - local.tee $4 i64.reinterpret_f64 - local.tee $5 + local.tee $4 i64.const 52 i64.shr_u i64.const 2047 @@ -5598,12 +5589,12 @@ i32.ge_u if f64.const 0 - local.get $5 + local.get $4 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp2_lut|inlined.0 drop - local.get $4 + local.get $0 f64.const 1 f64.add local.get $3 @@ -5612,14 +5603,14 @@ br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const inf - local.get $5 + local.get $4 i64.const 63 i64.shr_u i64.eqz br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const 0 - local.get $5 + local.get $4 i64.const -4570929321408987136 i64.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 @@ -5627,7 +5618,7 @@ end i32.const 0 local.get $3 - local.get $5 + local.get $4 i64.const 1 i64.shl i64.const -9143996093422370816 @@ -5635,10 +5626,10 @@ select local.set $3 end - local.get $4 + local.get $0 f64.const 52776558133248 f64.add - local.tee $0 + local.tee $6 i64.reinterpret_f64 local.tee $8 i64.const 127 @@ -5650,47 +5641,47 @@ i32.shl i32.const 5664 i32.add - local.tee $9 + local.tee $5 i64.load offset=8 local.get $8 i64.const 45 i64.shl i64.add - local.set $5 - local.get $4 + local.set $4 local.get $0 + local.get $6 f64.const 52776558133248 f64.sub f64.sub - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 f64.mul - local.set $6 - local.get $9 + local.set $7 + local.get $5 f64.load - local.get $0 + local.get $6 f64.const 0.6931471805599453 f64.mul f64.add + local.get $7 local.get $6 - local.get $0 f64.const 0.0555041086686087 f64.mul f64.const 0.24022650695909065 f64.add f64.mul f64.add - local.get $6 - local.get $6 + local.get $7 + local.get $7 f64.mul - local.get $0 + local.get $6 f64.const 1.3332074570119598e-03 f64.mul f64.const 0.009618131975721055 f64.add f64.mul f64.add - local.set $6 + local.set $7 local.get $3 i32.eqz if @@ -5700,46 +5691,46 @@ i64.and i64.eqz if - local.get $5 + local.get $4 i64.const 4503599627370496 i64.sub f64.reinterpret_i64 - local.tee $0 - local.get $6 + local.tee $6 + local.get $7 f64.mul - local.get $0 + local.get $6 f64.add f64.const 2 f64.mul br $~lib/util/math/specialcase2|inlined.0 end - local.get $5 + local.get $4 i64.const 4602678819172646912 i64.add f64.reinterpret_i64 - local.tee $7 - local.get $6 - f64.mul + local.tee $9 local.get $7 + f64.mul + local.get $9 f64.add - local.tee $0 + local.tee $10 f64.const 1 f64.lt if (result f64) - local.get $0 + local.get $10 f64.const 1 f64.add - local.tee $10 + local.tee $6 f64.const 1 - local.get $10 + local.get $6 f64.sub - local.get $0 + local.get $10 f64.add - local.get $7 - local.get $0 + local.get $9 + local.get $10 f64.sub + local.get $9 local.get $7 - local.get $6 f64.mul f64.add f64.add @@ -5747,19 +5738,19 @@ f64.const 1 f64.sub else - local.get $0 + local.get $10 end f64.const 2.2250738585072014e-308 f64.mul end br $~lib/util/math/exp2_lut|inlined.0 end - local.get $5 + local.get $4 f64.reinterpret_i64 - local.tee $0 - local.get $6 + local.tee $6 + local.get $7 f64.mul - local.get $0 + local.get $6 f64.add end local.get $1 @@ -5767,7 +5758,7 @@ call $std/math/check if (result i32) f64.const 2 - local.get $4 + local.get $0 call $~lib/bindings/Math/pow local.get $1 local.get $2 @@ -5783,9 +5774,6 @@ (local $6 i32) (local $7 f64) block $~lib/util/math/exp2f_lut|inlined.0 (result f32) - local.get $0 - f64.promote_f32 - local.set $3 local.get $0 i32.reinterpret_f32 local.tee $5 @@ -5826,7 +5814,9 @@ br_if $~lib/util/math/exp2f_lut|inlined.0 drop end - local.get $3 + local.get $0 + f64.promote_f32 + local.tee $3 f64.const 211106232532992 f64.add local.tee $7 @@ -5873,174 +5863,173 @@ local.get $2 call $std/math/check ) - (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) + (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) (local $4 i64) - (local $5 f64) - (local $6 i32) + (local $5 i64) + (local $6 i64) (local $7 f64) - (local $8 i32) + (local $8 f64) (local $9 f64) - (local $10 f64) + (local $10 i32) (local $11 f64) - local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $2 - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $3 - i64.gt_u - if - local.get $3 - local.get $2 - local.set $3 - local.set $2 - end - local.get $2 - f64.reinterpret_i64 - local.set $1 - local.get $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $6 - i32.const 2047 - i32.eq - if + (local $12 i32) + (local $13 f64) + block $__inlined_func$~lib/math/NativeMath.hypot (result f64) local.get $1 - return - end - local.get $3 - f64.reinterpret_i64 - local.set $0 - i64.const 0 - local.get $2 - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2047 - i32.eq - select - i64.eqz - if + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 local.get $0 - return - end - local.get $8 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.gt_u + if + local.get $4 + local.get $5 + local.set $4 + local.set $5 + end + local.get $5 + f64.reinterpret_i64 + local.tee $1 + local.get $5 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $10 + i32.const 2047 + i32.eq + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop + local.get $4 + f64.reinterpret_i64 + local.tee $0 + local.get $5 + i64.eqz + local.get $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $12 + i32.const 2047 + i32.eq + i32.or + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop local.get $0 local.get $1 f64.add - return - end - f64.const 1 - local.set $7 - local.get $8 - i32.const 1533 - i32.gt_u - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $7 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $6 - i32.const 573 - i32.lt_u + local.get $12 + local.get $10 + i32.sub + i32.const 64 + i32.gt_s + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop + f64.const 1 + local.set $11 + local.get $12 + i32.const 1533 + i32.gt_u if (result f64) - f64.const 1.90109156629516e-211 - local.set $7 - local.get $1 f64.const 5260135901548373507240989e186 + local.set $11 + local.get $1 + f64.const 1.90109156629516e-211 f64.mul local.set $1 local.get $0 - f64.const 5260135901548373507240989e186 + f64.const 1.90109156629516e-211 f64.mul else - local.get $0 + local.get $10 + i32.const 573 + i32.lt_u + if (result f64) + f64.const 1.90109156629516e-211 + local.set $11 + local.get $1 + f64.const 5260135901548373507240989e186 + f64.mul + local.set $1 + local.get $0 + f64.const 5260135901548373507240989e186 + f64.mul + else + local.get $0 + end end + local.tee $7 + local.get $7 + local.get $7 + f64.const 134217729 + f64.mul + local.tee $0 + f64.sub + local.get $0 + f64.add + local.tee $0 + f64.sub + local.set $9 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 + f64.mul + local.tee $8 + f64.sub + local.get $8 + f64.add + local.tee $13 + f64.sub + local.set $8 + local.get $11 + local.get $13 + local.get $13 + f64.mul + local.get $1 + local.get $1 + f64.mul + local.tee $1 + f64.sub + local.get $13 + local.get $13 + f64.add + local.get $8 + f64.add + local.get $8 + f64.mul + f64.add + local.get $0 + local.get $0 + f64.mul + local.get $7 + local.get $7 + f64.mul + local.tee $7 + f64.sub + local.get $0 + local.get $0 + f64.add + local.get $9 + f64.add + local.get $9 + f64.mul + f64.add + f64.add + local.get $1 + f64.add + local.get $7 + f64.add + f64.sqrt + f64.mul end - local.tee $0 - local.get $0 - local.get $0 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $10 - f64.sub - local.set $5 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $9 - f64.sub - local.set $11 - local.get $7 - local.get $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 $11 - f64.add - local.get $11 - f64.mul - f64.add - local.get $10 - local.get $10 - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.sub - local.get $10 - local.get $10 - f64.add - local.get $5 - f64.add - local.get $5 - f64.mul - f64.add - f64.add - local.get $1 - f64.add - local.get $0 - f64.add - f64.sqrt - f64.mul + local.get $2 + local.get $3 + call $std/math/check ) (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) (local $4 i32) @@ -6053,84 +6042,82 @@ i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $5 local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.gt_u if - local.get $5 local.get $4 - local.set $5 + local.get $5 local.set $4 + local.set $5 end local.get $5 f32.reinterpret_i32 - local.set $0 - local.get $4 - f32.reinterpret_i32 local.tee $1 - local.get $4 + local.get $5 i32.const 2139095040 i32.eq br_if $__inlined_func$~lib/math/NativeMathf.hypot drop - local.get $0 + local.get $4 + f32.reinterpret_i32 + local.tee $8 local.get $1 f32.add local.get $5 + i32.eqz local.get $4 - i32.sub - i32.const 209715200 + i32.const 2139095040 i32.ge_u - i32.const 1 - i32.const 0 + i32.or local.get $4 local.get $5 - i32.const 2139095040 + i32.sub + i32.const 209715200 i32.ge_u - select - select + i32.or br_if $__inlined_func$~lib/math/NativeMathf.hypot drop f32.const 1 - local.set $8 - local.get $5 + local.set $0 + local.get $4 i32.const 1568669696 i32.ge_u if (result f32) f32.const 1237940039285380274899124e3 - local.set $8 + local.set $0 local.get $1 f32.const 8.077935669463161e-28 f32.mul local.set $1 - local.get $0 + local.get $8 f32.const 8.077935669463161e-28 f32.mul else - local.get $4 + local.get $5 i32.const 562036736 i32.lt_u if (result f32) f32.const 8.077935669463161e-28 - local.set $8 + local.set $0 local.get $1 f32.const 1237940039285380274899124e3 f32.mul local.set $1 - local.get $0 + local.get $8 f32.const 1237940039285380274899124e3 f32.mul else - local.get $0 + local.get $8 end end - local.set $0 - local.get $8 + local.set $8 local.get $0 + local.get $8 f64.promote_f32 local.tee $7 local.get $7 @@ -6149,375 +6136,386 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 f64) - (local $4 f64) - (local $5 i64) + (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 f64) (local $7 f64) - (local $8 i32) - i32.const 1 - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 1048576 - i32.lt_u - select - if - local.get $5 - i64.const 1 - i64.shl - i64.eqz + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + block $__inlined_func$~lib/math/NativeMath.log10 (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.get $3 + i32.const 1048576 + i32.lt_u + i32.or if f64.const -1 local.get $0 local.get $0 f64.mul f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if + local.get $4 + i64.const 1 + i64.shl + i64.eqz + br_if $__inlined_func$~lib/math/NativeMath.log10 + drop local.get $0 local.get $0 f64.sub f64.const 0 f64.div - return - end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if + local.get $3 + i32.const 31 + i32.shr_u + br_if $__inlined_func$~lib/math/NativeMath.log10 + drop + i32.const -54 + local.set $5 local.get $0 - return - else - local.get $5 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $4 i64.const 32 - i64.shl - i64.const 1 - local.get $1 - i32.const 1072693248 - i32.eq - select - i64.eqz + 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 + else f64.const 0 - return + 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 + drop end 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.sub + local.tee $6 + f64.const 0.5 + f64.mul + local.get $6 + f64.mul + local.set $7 + local.get $6 + local.get $6 + f64.const 2 + f64.add + f64.div + local.tee $8 + local.get $8 + f64.mul + local.tee $9 + local.get $9 + f64.mul + local.set $10 + local.get $6 + local.get $6 + local.get $7 + f64.sub + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $11 + f64.sub + local.get $7 + f64.sub + local.get $8 + local.get $7 + local.get $9 + local.get $10 + local.get $10 + local.get $10 + 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 $10 + local.get $10 + local.get $10 + 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 $7 + local.get $3 + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + local.get $5 + i32.add + f64.convert_i32_s + local.tee $8 + f64.const 0.30102999566361177 + f64.mul + local.tee $9 + local.get $11 + f64.const 0.4342944818781689 + f64.mul + local.tee $10 + f64.add + local.set $6 + local.get $8 + f64.const 3.694239077158931e-13 + f64.mul + local.get $7 + local.get $11 + f64.add + f64.const 2.5082946711645275e-11 + f64.mul + f64.add + local.get $7 + f64.const 0.4342944818781689 + f64.mul + f64.add + local.get $9 + local.get $6 + f64.sub + local.get $10 + f64.add + f64.add + local.get $6 + f64.add end - local.get $5 - i64.const 4294967295 - i64.and local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 0.5 - f64.mul - local.get $0 - f64.mul - local.set $3 - local.get $0 - local.get $0 - f64.const 2 - f64.add - f64.div - local.tee $6 - local.get $6 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $2 - local.get $0 - local.get $0 - local.get $3 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $7 - f64.sub - local.get $3 - f64.sub - local.get $6 - local.get $3 - local.get $4 - local.get $2 - local.get $2 - local.get $2 - 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 $2 - local.get $2 - local.get $2 - 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 $0 - local.get $1 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.get $8 - i32.add - f64.convert_i32_s - local.tee $2 - f64.const 0.30102999566361177 - f64.mul - local.tee $3 - local.get $7 - f64.const 0.4342944818781689 - f64.mul - local.tee $6 - f64.add - local.set $4 local.get $2 - f64.const 3.694239077158931e-13 - f64.mul - local.get $0 - local.get $7 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $0 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.sub - local.get $6 - f64.add - f64.add - local.get $4 - f64.add + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/Math/log10 + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end ) - (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) + (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 $6 f32) (local $7 f32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz + (local $8 f32) + (local $9 f32) + block $__inlined_func$~lib/math/NativeMathf.log10 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + 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 - return - end - local.get $1 - i32.const 31 - i32.shr_u - if + local.get $3 + i32.const 1 + i32.shl + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.log10 + drop local.get $0 local.get $0 f32.sub f32.const 0 f32.div - return - end - i32.const -25 - local.set $6 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if + local.get $3 + i32.const 31 + i32.shr_u + br_if $__inlined_func$~lib/math/NativeMathf.log10 + drop + i32.const -25 + local.set $4 local.get $0 - return + f32.const 33554432 + f32.mul + i32.reinterpret_f32 + local.set $3 else - local.get $1 - i32.const 1065353216 - i32.eq + local.get $3 + i32.const 2139095040 + i32.ge_u if + local.get $0 + br $__inlined_func$~lib/math/NativeMathf.log10 + else f32.const 0 - return + local.get $3 + i32.const 1065353216 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.log10 + drop end end + local.get $3 + i32.const 4913933 + i32.add + local.tee $3 + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + f32.reinterpret_i32 + f32.const 1 + f32.sub + local.tee $7 + local.get $7 + 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 $8 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + local.get $4 + i32.add + f32.convert_i32_s + local.tee $6 + f32.const 7.903415166765626e-07 + f32.mul + local.get $7 + local.get $7 + local.get $7 + f32.const 0.5 + f32.mul + local.get $7 + f32.mul + local.tee $7 + f32.sub + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $9 + f32.sub + local.get $7 + f32.sub + local.get $0 + local.get $7 + local.get $5 + local.get $8 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $8 + local.get $8 + 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 $9 + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $0 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $9 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $6 + f32.const 0.3010292053222656 + f32.mul + f32.add end local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - f32.const 2 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.tee $4 - local.get $4 - f32.mul - local.set $2 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.get $6 - i32.add - f32.convert_i32_s - local.tee $7 - f32.const 7.903415166765626e-07 - f32.mul - local.get $0 - local.get $0 - local.get $0 - f32.const 0.5 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $5 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $4 - local.get $2 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $2 local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $5 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $5 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $7 - f32.const 0.3010292053222656 - f32.mul - f32.add + call $std/math/check ) (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) (local $1 i64) - (local $2 f64) - (local $3 i32) + (local $2 i32) + (local $3 i64) (local $4 f64) (local $5 f64) (local $6 f64) (local $7 f64) - (local $8 i64) - (local $9 i32) - (local $10 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 @@ -6530,70 +6528,70 @@ local.get $0 f64.const 1 f64.sub - local.tee $0 + local.tee $5 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $7 + local.tee $6 f64.const 1.4426950407214463 f64.mul - local.set $4 - local.get $0 - local.get $0 + local.set $7 + local.get $5 + local.get $5 f64.mul - local.tee $2 - local.get $2 + local.tee $8 + local.get $8 f64.mul - local.set $5 - local.get $4 - local.get $2 - local.get $0 + 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 $6 + local.tee $4 f64.add - local.tee $10 - local.get $0 - local.get $7 + local.tee $9 + local.get $5 + local.get $6 f64.sub f64.const 1.4426950407214463 f64.mul - local.get $0 + local.get $5 f64.const 1.6751713164886512e-10 f64.mul f64.add - local.get $4 - local.get $10 + local.get $7 + local.get $9 f64.sub - local.get $6 + local.get $4 f64.add f64.add - local.get $5 local.get $0 + local.get $5 f64.const 0.2885390081805197 f64.mul f64.const -0.360673760222145 f64.add - local.get $2 - local.get $0 + local.get $8 + local.get $5 f64.const 0.2060992861022954 f64.mul f64.const -0.24044917405728863 f64.add f64.mul f64.add - local.get $5 local.get $0 + local.get $5 f64.const 0.1603032746063156 f64.mul f64.const -0.18033596705327856 f64.add - local.get $2 - local.get $0 + local.get $8 + local.get $5 f64.const 0.13046826811283835 f64.mul f64.const -0.14483316576701266 @@ -6611,7 +6609,7 @@ i64.const 48 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $2 i32.const 16 i32.sub i32.const 32736 @@ -6629,32 +6627,31 @@ br_if $~lib/util/math/log2_lut|inlined.0 drop local.get $0 - local.tee $2 local.get $1 i64.const 9218868437227405312 i64.eq br_if $~lib/util/math/log2_lut|inlined.0 drop i32.const 1 - local.get $3 + local.get $2 i32.const 32752 i32.and i32.const 32752 i32.eq - local.get $3 + local.get $2 i32.const 32768 i32.and select if - local.get $2 - local.get $2 + 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 $2 + local.get $0 f64.const 4503599627370496 f64.mul i64.reinterpret_f64 @@ -6665,7 +6662,7 @@ local.get $1 i64.const 4604367669032910848 i64.sub - local.tee $8 + local.tee $3 i64.const 46 i64.shr_u i64.const 63 @@ -6673,83 +6670,83 @@ i32.wrap_i64 i32.const 4 i32.shl - local.tee $3 + local.tee $2 i32.const 7968 i32.add - local.set $9 - local.get $8 + local.set $10 + local.get $3 i64.const 52 i64.shr_s f64.convert_i64_s - local.get $9 + local.get $10 f64.load offset=8 f64.add - local.tee $7 + local.tee $0 local.get $1 - local.get $8 + local.get $3 i64.const -4503599627370496 i64.and i64.sub f64.reinterpret_i64 - local.get $3 + local.get $2 i32.const 8992 i32.add - local.tee $3 + local.tee $2 f64.load f64.sub - local.get $3 + local.get $2 f64.load offset=8 f64.sub - local.get $9 + local.get $10 f64.load f64.mul - local.tee $0 + local.tee $4 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $4 + local.tee $5 f64.const 1.4426950407214463 f64.mul - local.tee $5 + local.tee $6 f64.add - local.set $6 + local.set $7 + local.get $0 local.get $7 - local.get $6 f64.sub - local.get $5 + local.get $6 f64.add - local.get $0 local.get $4 + local.get $5 f64.sub f64.const 1.4426950407214463 f64.mul - local.get $0 + local.get $4 f64.const 1.6751713164886512e-10 f64.mul f64.add f64.add - local.get $0 - local.get $0 + local.get $4 + local.get $4 f64.mul - local.tee $2 - local.get $0 + local.tee $0 + local.get $4 f64.const 0.4808983469629985 f64.mul f64.const -0.7213475204444882 f64.add - local.get $2 local.get $0 + local.get $4 f64.const 0.2885390073180969 f64.mul f64.const -0.36067375954075914 f64.add f64.mul f64.add - local.get $2 - local.get $2 - f64.mul local.get $0 + local.get $0 + f64.mul + local.get $4 f64.const 0.2061202382173603 f64.mul f64.const -0.2404693555628422 @@ -6758,7 +6755,7 @@ f64.add f64.mul f64.add - local.get $6 + local.get $7 f64.add end ) @@ -6790,16 +6787,15 @@ i32.eq br_if $~lib/util/math/log2f_lut|inlined.0 drop - i32.const 1 + local.get $3 + i32.const 31 + i32.shr_u local.get $3 i32.const 1 i32.shl i32.const -16777216 i32.ge_u - local.get $3 - i32.const 31 - i32.shr_u - select + i32.or if local.get $0 local.get $0 @@ -6919,6 +6915,7 @@ (local $7 i64) (local $8 f64) (local $9 i64) + (local $10 i64) block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 local.get $0 @@ -6934,34 +6931,32 @@ drop local.get $1 i64.reinterpret_f64 - local.tee $4 + local.tee $7 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $6 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 + local.set $9 + local.get $7 + i64.const 1 + i64.shl + local.tee $5 + i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $4 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $5 + local.tee $10 i64.const 2047 i64.eq - local.get $4 - i64.const 1 - i64.shl - local.tee $7 - i64.eqz - select - select + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 local.get $1 @@ -6971,152 +6966,149 @@ f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $7 - local.get $3 + local.get $5 + local.get $4 i64.const 1 i64.shl - local.tee $9 + local.tee $3 i64.ge_u if local.get $0 - local.get $7 - local.get $9 + local.get $3 + local.get $5 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 + local.get $4 i64.const 63 i64.shr_u - local.set $7 - local.get $5 + local.get $10 i64.eqz if (result i64) - local.get $3 + local.get $4 i64.const 1 - local.get $5 - local.get $3 + local.get $10 + local.get $4 i64.const 12 i64.shl i64.clz i64.sub - local.tee $5 + local.tee $10 i64.sub i64.shl else - local.get $3 + local.get $4 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $3 - local.get $6 + local.get $9 i64.eqz if (result i64) - local.get $4 + local.get $7 i64.const 1 - local.get $6 - local.get $4 + local.get $9 + local.get $7 i64.const 12 i64.shl i64.clz i64.sub - local.tee $6 + local.tee $9 i64.sub i64.shl else - local.get $4 + local.get $7 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i64.gt_s - if + 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 + drop local.get $3 local.get $4 - i64.ge_u - if (result i64) - local.get $3 - local.get $4 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $5 - i64.const 1 i64.sub - local.set $5 - br $while-continue|0 + 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 - local.get $5 + end + local.get $10 + 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.ge_u - if - local.get $3 - local.get $4 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i64.sub - local.set $3 - end + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $5 + local.get $4 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 $7 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - br $__inlined_func$~lib/math/NativeMath.mod end - local.get $0 - f64.const 0 - f64.mul + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $5 + i64.sub + local.set $4 + i64.const 63 + i64.shl + local.get $3 + local.get $5 + i64.shl + local.tee $3 + i64.const 4503599627370496 + i64.sub + local.get $4 + i64.const 52 + i64.shl + i64.or + local.get $3 + i64.const 1 + local.get $4 + i64.sub + i64.shr_u + local.get $4 + i64.const 0 + i64.gt_s + select + i64.or + f64.reinterpret_i64 end local.get $2 f64.const 0 @@ -7139,6 +7131,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $1 f32.abs f32.const 1 @@ -7154,31 +7147,31 @@ end local.get $1 i32.reinterpret_f32 - local.tee $3 + local.tee $6 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $5 + local.set $7 i32.const 1 local.get $1 local.get $1 f32.ne local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $4 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $4 + local.tee $8 i32.const 255 i32.eq i32.const 1 - local.get $3 + local.get $6 i32.const 1 i32.shl - local.tee $6 + local.tee $3 select select if @@ -7190,163 +7183,164 @@ f32.div return end - local.get $6 - local.get $2 + local.get $3 + local.get $4 i32.const 1 i32.shl - local.tee $7 + local.tee $2 i32.ge_u if local.get $0 - local.get $6 - local.get $7 + local.get $2 + local.get $3 i32.ne f32.convert_i32_u f32.mul return end - local.get $2 + local.get $4 i32.const -2147483648 i32.and - local.set $6 - local.get $4 + local.set $5 + local.get $8 if (result i32) - local.get $2 + local.get $4 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $2 + local.get $4 i32.const 1 + local.get $8 local.get $4 - local.get $2 i32.const 9 i32.shl i32.clz i32.sub - local.tee $4 + local.tee $8 i32.sub i32.shl end local.set $2 - local.get $5 + local.get $7 if (result i32) - local.get $3 + local.get $6 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $3 + local.get $6 i32.const 1 - local.get $5 - local.get $3 + local.get $7 + local.get $6 i32.const 9 i32.shl i32.clz i32.sub - local.tee $5 + local.tee $7 i32.sub i32.shl end local.set $3 - block $folding-inner0 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - if + 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.ge_u - if (result i32) - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - else - local.get $2 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return end - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 + local.get $2 + local.get $3 i32.sub - local.set $4 - br $while-continue|0 + 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 - local.get $4 + end + local.get $8 + local.get $2 + local.get $3 + i32.ge_u + if local.get $2 local.get $3 - i32.ge_u + i32.eq if - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - local.set $2 + local.get $0 + f32.const 0 + f32.mul + return end local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.sub - local.set $4 - local.get $2 local.get $3 - i32.shl + i32.sub local.set $2 - local.get $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $2 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $6 - i32.or - f32.reinterpret_i32 - return end - local.get $0 - f32.const 0 - f32.mul + 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.tee $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u + local.get $3 + i32.const 0 + i32.gt_s + select + 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 f64) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i64) (local $7 f64) - (local $8 i64) + (local $8 f64) (local $9 f64) (local $10 f64) (local $11 i32) - (local $12 i32) - (local $13 f64) - (local $14 i64) + (local $12 i64) + (local $13 i64) + (local $14 f64) (local $15 f64) (local $16 f64) (local $17 f64) @@ -7405,464 +7399,440 @@ end block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $1 - local.tee $4 i64.reinterpret_f64 + local.tee $12 + i64.const 52 + i64.shr_u local.tee $6 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + local.get $0 + i64.reinterpret_f64 + local.tee $2 i64.const 52 i64.shr_u - local.set $14 - block $~lib/util/math/exp_inline|inlined.0 (result f64) - local.get $0 - local.tee $1 - i64.reinterpret_f64 - local.tee $2 - i64.const 52 - i64.shr_u - local.tee $8 + local.tee $4 + i64.const 1 + i64.sub + i64.const 2046 + i64.ge_u + i32.or + if + local.get $12 + i64.const 1 + i64.shl i64.const 1 i64.sub - i64.const 2046 + i64.const -9007199254740993 i64.ge_u - if (result i32) - i32.const 1 - else - local.get $14 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - end if - local.get $6 + f64.const 1 + local.get $12 i64.const 1 i64.shl + 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 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $6 - i64.const 1 - i64.shl - 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 $1 - local.get $4 - f64.add - i32.const 1 - local.get $6 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - local.get $2 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - select - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const nan:0x8000000000000 - local.get $2 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const 0 - local.get $6 - i64.const 63 - i64.shr_u - i64.eqz - local.get $2 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.lt_u - i32.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - local.get $4 - local.get $4 - f64.mul - br $~lib/util/math/pow_lut|inlined.0 - end + i64.shl + i64.const -9007199254740992 + i64.gt_u local.get $2 i64.const 1 i64.shl + 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 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $1 - local.get $1 - 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 $6 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $5 - i64.const 1023 - i64.lt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 2 - local.get $5 - i64.const 1075 - i64.gt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 0 - i64.const 1 - i64.const 1075 - local.get $5 - i64.sub - i64.shl - local.tee $5 - i64.const 1 - i64.sub - local.get $6 - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 1 - local.get $5 - local.get $6 - 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 $6 - i64.const 63 - i64.shr_u - i32.wrap_i64 - select - br $~lib/util/math/pow_lut|inlined.0 - end + i64.shl + i64.const 9214364837600034816 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 0 + local.get $12 + i64.const 63 + i64.shr_u + i64.eqz + local.get $2 + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.lt_u + i32.eq + br_if $~lib/util/math/pow_lut|inlined.0 + 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 - block $~lib/util/math/checkint|inlined.1 (result i32) + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) i32.const 0 - local.get $6 + local.get $12 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $5 + local.tee $2 i64.const 1023 i64.lt_u - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 2 - local.get $5 + local.get $2 i64.const 1075 i64.gt_u - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 0 i64.const 1 i64.const 1075 - local.get $5 + local.get $2 i64.sub i64.shl - local.tee $5 + local.tee $2 i64.const 1 i64.sub - local.get $6 + local.get $12 i64.and i64.const 0 i64.ne - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 1 - local.get $5 - local.get $6 + local.get $2 + local.get $12 i64.and i64.const 0 i64.ne - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 2 end - local.tee $11 - i32.eqz - if - local.get $1 - local.get $1 - f64.sub - local.tee $0 - local.get $0 - f64.div - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $8 - i64.const 2047 - i64.and - local.set $8 - i32.const 262144 - i32.const 0 - local.get $11 i32.const 1 i32.eq - select - local.set $12 - local.get $2 - i64.const 9223372036854775807 - i64.and - local.set $2 + else + i32.const 0 end - local.get $14 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - if - f64.const 1 - local.get $2 - i64.const 4607182418800017408 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const 1 - local.get $14 + select + local.tee $0 + f64.div + local.get $0 + local.get $12 + i64.const 63 + i64.shr_u + i32.wrap_i64 + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if + block $~lib/util/math/checkint|inlined.1 (result i32) + i32.const 0 + local.get $12 + i64.const 52 + i64.shr_u i64.const 2047 i64.and - i64.const 958 + local.tee $13 + i64.const 1023 i64.lt_u - br_if $~lib/util/math/pow_lut|inlined.0 + br_if $~lib/util/math/checkint|inlined.1 drop - f64.const inf - f64.const 0 - local.get $14 - i64.const 2048 - i64.lt_u - local.get $2 - i64.const 4607182418800017408 + i32.const 2 + local.get $13 + i64.const 1075 i64.gt_u - i32.eq - select - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $8 - i64.eqz - if (result i64) - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - i64.const 234187180623265792 + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 0 + i64.const 1 + i64.const 1075 + local.get $13 i64.sub - else - local.get $2 + i64.shl + local.tee $13 + i64.const 1 + i64.sub + local.get $12 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 1 + local.get $12 + local.get $13 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 end - local.set $2 - end - local.get $2 - local.get $2 - i64.const 4604531861337669632 - i64.sub - local.tee $8 - 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 $1 - local.get $8 - 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 $11 - f64.load - local.tee $0 - f64.mul - f64.const 1 - f64.sub - local.set $13 - local.get $8 - i64.const 52 - i64.shr_s - f64.convert_i64_s - local.tee $17 - f64.const 0.6931471805598903 - f64.mul - local.get $11 - f64.load offset=16 - f64.add - local.tee $18 - local.get $13 - local.get $5 - f64.reinterpret_i64 - local.get $1 - f64.sub - local.get $0 - f64.mul - local.tee $7 - f64.add - local.tee $10 - f64.add - local.set $15 - local.get $10 - local.get $10 - f64.const -0.5 - f64.mul - local.tee $9 - f64.mul - local.set $16 - local.get $15 - local.get $13 - local.get $13 - f64.const -0.5 - f64.mul - local.tee $1 - f64.mul - local.tee $0 - f64.add - local.tee $13 - local.get $13 - local.get $17 - f64.const 5.497923018708371e-14 - f64.mul - local.get $11 - f64.load offset=24 - f64.add - local.get $18 - local.get $15 - f64.sub - local.get $10 - f64.add - f64.add - local.get $7 - local.get $9 - local.get $1 - f64.add - f64.mul - f64.add - local.get $15 - local.get $13 - f64.sub + 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 $4 + i64.const 2047 + i64.and + local.set $4 + i32.const 262144 + i32.const 0 + local.get $3 + i32.const 1 + i32.eq + select + local.set $5 + local.get $2 + i64.const 9223372036854775807 + i64.and + local.set $2 + end + local.get $6 + i64.const 2047 + i64.and + 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 $6 + i64.const 2047 + i64.and + 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 $0 - f64.add - f64.add - local.get $10 - local.get $16 - f64.mul - local.get $10 - f64.const 0.5000000000000007 - f64.mul - f64.const -0.6666666666666679 - f64.add - local.get $16 - local.get $10 - f64.const -0.6666666663487739 - f64.mul - f64.const 0.7999999995323976 - f64.add - local.get $16 - local.get $10 - f64.const 1.0000415263675542 - f64.mul - f64.const -1.142909628459501 - f64.add - f64.mul - f64.add - f64.mul - f64.add + f64.const 4503599627370496 f64.mul - f64.add - local.tee $0 - f64.add - local.tee $1 - f64.sub - local.get $0 - f64.add - global.set $~lib/util/math/log_tail - local.get $6 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + i64.const 234187180623265792 + i64.sub + local.get $2 + local.get $4 + i64.eqz + select + local.set $2 + end + local.get $2 + local.get $2 + i64.const 4604531861337669632 + i64.sub + local.tee $2 + i64.const -4503599627370496 + i64.and + i64.sub + local.tee $4 + 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.sub + local.set $9 + local.get $2 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $14 + f64.const 0.6931471805598903 + f64.mul + local.get $3 + f64.load offset=16 + f64.add + local.tee $0 + local.get $9 + local.get $4 + f64.reinterpret_i64 + local.get $7 + f64.sub + local.get $8 + f64.mul + local.tee $7 + f64.add + local.tee $15 + f64.add + local.set $16 + local.get $15 + local.get $15 + f64.const -0.5 + f64.mul + local.tee $8 + f64.mul + local.set $17 + local.get $16 + local.get $9 + local.get $9 + f64.const -0.5 + f64.mul + local.tee $18 + f64.mul + local.tee $9 + f64.add + local.tee $10 + local.get $10 + local.get $14 + f64.const 5.497923018708371e-14 + f64.mul + local.get $3 + f64.load offset=24 + f64.add + local.get $0 + local.get $16 + f64.sub + local.get $15 + f64.add + f64.add + local.get $7 + local.get $8 + local.get $18 + f64.add + f64.mul + f64.add + local.get $16 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + local.get $15 + local.get $17 + f64.mul + local.get $15 + f64.const 0.5000000000000007 + f64.mul + f64.const -0.6666666666666679 + f64.add + local.get $17 + local.get $15 + f64.const -0.6666666663487739 + f64.mul + f64.const 0.7999999995323976 + f64.add + local.get $17 + local.get $15 + 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 + 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 $12 i64.const -134217728 i64.and f64.reinterpret_i64 - local.tee $7 - local.get $1 + local.tee $0 + local.get $7 i64.reinterpret_f64 i64.const -134217728 i64.and f64.reinterpret_i64 - local.tee $0 - f64.mul - local.set $9 - local.get $4 - local.get $7 - f64.sub - local.get $0 - f64.mul - local.get $4 - local.get $1 - local.get $0 - f64.sub - global.get $~lib/util/math/log_tail - f64.add + local.tee $8 f64.mul - f64.add - local.set $1 - local.get $9 + local.tee $9 i64.reinterpret_f64 - local.tee $5 + local.tee $2 i64.const 52 i64.shr_u i32.wrap_i64 @@ -7876,7 +7846,7 @@ if f64.const -1 f64.const 1 - local.get $12 + local.get $5 select local.get $3 i32.const 969 @@ -7885,21 +7855,21 @@ i32.ge_u br_if $~lib/util/math/exp_inline|inlined.0 drop - local.get $5 + local.get $2 i64.const 63 i64.shr_u i32.wrap_i64 if (result f64) f64.const -1.2882297539194267e-231 f64.const 1.2882297539194267e-231 - local.get $12 + local.get $5 select f64.const 1.2882297539194267e-231 f64.mul else f64.const -3105036184601417870297958e207 f64.const 3105036184601417870297958e207 - local.get $12 + local.get $5 select f64.const 3105036184601417870297958e207 f64.mul @@ -7917,9 +7887,9 @@ f64.mul f64.const 6755399441055744 f64.add - local.tee $0 + local.tee $10 i64.reinterpret_f64 - local.tee $8 + local.tee $2 i64.const 127 i64.and i64.const 1 @@ -7931,48 +7901,60 @@ i32.add local.tee $11 i64.load offset=8 - local.get $12 + local.get $5 i64.extend_i32_u - local.get $8 + local.get $2 i64.add i64.const 45 i64.shl i64.add - local.set $5 + local.set $4 local.get $9 - local.get $0 + local.get $10 f64.const 6755399441055744 f64.sub - local.tee $0 + local.tee $9 f64.const -0.005415212348111709 f64.mul f64.add - local.get $0 + local.get $9 f64.const -1.2864023111638346e-14 f64.mul f64.add local.get $1 - f64.add - local.tee $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 - local.set $0 + f64.add + f64.add + local.tee $0 + local.get $0 + f64.mul + local.set $1 local.get $11 f64.load - local.get $1 - f64.add 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 $0 - local.get $0 - f64.mul local.get $1 + local.get $1 + f64.mul + local.get $0 f64.const 0.008333335853059549 f64.mul f64.const 0.0416666808410674 @@ -7984,12 +7966,12 @@ i32.eqz if block $~lib/util/math/specialcase|inlined.1 (result f64) - local.get $8 + local.get $2 i64.const 2147483648 i64.and i64.eqz if - local.get $5 + local.get $4 i64.const 4544132024016830464 i64.sub f64.reinterpret_i64 @@ -8002,13 +7984,13 @@ f64.mul br $~lib/util/math/specialcase|inlined.1 end - local.get $5 + local.get $4 i64.const 4602678819172646912 i64.add - local.tee $5 + local.tee $2 f64.reinterpret_i64 - local.tee $9 - local.get $9 + local.tee $1 + local.get $1 local.get $0 f64.mul f64.add @@ -8020,36 +8002,36 @@ f64.const 1 local.get $7 f64.copysign - local.tee $4 + local.tee $8 local.get $7 f64.add - local.tee $1 - local.get $4 - local.get $1 + local.tee $9 + local.get $8 + local.get $9 f64.sub local.get $7 f64.add - local.get $9 + local.get $1 local.get $7 f64.sub - local.get $9 + local.get $1 local.get $0 f64.mul f64.add f64.add f64.add - local.get $4 + local.get $8 f64.sub - local.tee $7 + local.tee $0 f64.const 0 f64.eq if (result f64) - local.get $5 + local.get $2 i64.const -9223372036854775808 i64.and f64.reinterpret_i64 else - local.get $7 + local.get $0 end else local.get $7 @@ -8059,7 +8041,7 @@ end br $~lib/util/math/exp_inline|inlined.0 end - local.get $5 + local.get $4 f64.reinterpret_i64 local.tee $1 local.get $1 @@ -8089,11 +8071,11 @@ ) (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i64) (local $6 i32) - (local $7 f64) + (local $7 i32) (local $8 f64) local.get $1 f32.abs @@ -8150,14 +8132,14 @@ block $~lib/util/math/powf_lut|inlined.0 (result f32) local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $7 i32.const 1 i32.shl i32.const 1 i32.sub i32.const -16777217 i32.ge_u - local.tee $3 + local.tee $6 local.get $0 i32.reinterpret_f32 local.tee $2 @@ -8167,10 +8149,10 @@ i32.ge_u i32.or if - local.get $3 + local.get $6 if f32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl i32.eqz @@ -8185,8 +8167,7 @@ local.get $0 local.get $1 f32.add - i32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl i32.const -16777216 @@ -8196,7 +8177,7 @@ i32.shl i32.const -16777216 i32.gt_u - select + i32.or br_if $~lib/util/math/powf_lut|inlined.0 drop f32.const nan:0x400000 @@ -8208,7 +8189,7 @@ br_if $~lib/util/math/powf_lut|inlined.0 drop f32.const 0 - local.get $4 + local.get $7 i32.const 31 i32.shr_u i32.eqz @@ -8246,7 +8227,7 @@ if (result i32) block $~lib/util/math/checkintf|inlined.0 (result i32) i32.const 0 - local.get $4 + local.get $7 i32.const 23 i32.shr_u i32.const 255 @@ -8271,13 +8252,13 @@ local.tee $2 i32.const 1 i32.sub - local.get $4 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.0 drop i32.const 1 local.get $2 - local.get $4 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.0 drop @@ -8292,7 +8273,7 @@ local.tee $0 f32.div local.get $0 - local.get $4 + local.get $7 i32.const 31 i32.shr_u select @@ -8304,8 +8285,7 @@ if block $~lib/util/math/checkintf|inlined.1 (result i32) i32.const 0 - local.get $4 - local.tee $3 + local.get $7 i32.const 23 i32.shr_u i32.const 255 @@ -8330,13 +8310,13 @@ local.tee $4 i32.const 1 i32.sub - local.get $3 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.1 drop i32.const 1 - local.get $3 local.get $4 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.1 drop @@ -8359,7 +8339,7 @@ i32.const 1 i32.eq select - local.set $6 + local.set $4 local.get $2 i32.const 2147483647 i32.and @@ -8386,14 +8366,14 @@ local.get $2 i32.const 1060306944 i32.sub - local.tee $4 + local.tee $2 i32.const -8388608 i32.and - local.tee $3 + local.tee $6 i32.sub f32.reinterpret_i32 f64.promote_f32 - local.get $4 + local.get $2 i32.const 19 i32.shr_u i32.const 15 @@ -8402,48 +8382,48 @@ i32.shl i32.const 10016 i32.add - local.tee $4 + local.tee $2 f64.load f64.mul f64.const 1 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $8 local.get $1 f64.promote_f32 - local.get $8 + local.get $3 f64.const 0.288457581109214 f64.mul f64.const -0.36092606229713164 f64.add - local.get $7 - local.get $7 + local.get $8 + local.get $8 f64.mul f64.mul - local.get $8 + local.get $3 f64.const 1.4426950408774342 f64.mul - local.get $4 + local.get $2 f64.load offset=8 - local.get $3 + local.get $6 i32.const 23 i32.shr_s f64.convert_i32_s f64.add f64.add - local.get $8 + local.get $3 f64.const 0.480898481472577 f64.mul f64.const -0.7213474675006291 f64.add - local.get $7 + local.get $8 f64.mul f64.add f64.add f64.mul - local.tee $8 + local.tee $3 i64.reinterpret_f64 i64.const 47 i64.shr_u @@ -8454,50 +8434,50 @@ if f32.const -1584563250285286751870879e5 f32.const 1584563250285286751870879e5 - local.get $6 + local.get $4 select f32.const 1584563250285286751870879e5 f32.mul - local.get $8 + local.get $3 f64.const 127.99999995700433 f64.gt br_if $~lib/util/math/powf_lut|inlined.0 drop f32.const -2.524354896707238e-29 f32.const 2.524354896707238e-29 - local.get $6 + local.get $4 select f32.const 2.524354896707238e-29 f32.mul - local.get $8 + local.get $3 f64.const -150 f64.le br_if $~lib/util/math/powf_lut|inlined.0 drop end - local.get $8 + local.get $3 f64.const 211106232532992 f64.add - local.tee $7 + local.tee $8 i64.reinterpret_f64 local.set $5 + local.get $3 local.get $8 - local.get $7 f64.const 211106232532992 f64.sub f64.sub - local.tee $8 + local.tee $3 f64.const 0.6931471806916203 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.05550361559341535 f64.mul f64.const 0.2402284522445722 f64.add - local.get $8 - local.get $8 + local.get $3 + local.get $3 f64.mul f64.mul f64.add @@ -8510,7 +8490,7 @@ i32.const 7712 i32.add i64.load - local.get $6 + local.get $4 i64.extend_i32_u local.get $5 i64.add @@ -8720,23 +8700,22 @@ (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) + (local $5 i32) (local $6 i32) - (local $7 f64) - (local $8 i32) + (local $7 i64) + (local $8 f64) local.get $1 i64.reinterpret_f64 - local.tee $4 + local.tee $7 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $5 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 + local.set $4 + local.get $7 + i64.const 1 + i64.shl + i64.eqz local.get $0 i64.reinterpret_f64 local.tee $2 @@ -8747,12 +8726,11 @@ local.tee $3 i64.const 2047 i64.eq - local.get $4 - i64.const 1 - i64.shl - i64.eqz - select - select + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 local.get $1 @@ -8774,7 +8752,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.set $8 + local.set $6 local.get $3 i64.eqz if (result i64) @@ -8797,34 +8775,34 @@ i64.or end local.set $2 - local.get $5 + local.get $4 i64.eqz if (result i64) - local.get $4 + local.get $7 i64.const 1 - local.get $5 local.get $4 + local.get $7 i64.const 12 i64.shl i64.clz i64.sub - local.tee $5 + local.tee $4 i64.sub i64.shl else - local.get $4 + local.get $7 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end - local.set $4 + local.set $7 block $do-break|0 local.get $3 - local.get $5 + local.get $4 i64.lt_s if - local.get $5 + local.get $4 local.get $3 i64.const 1 i64.add @@ -8835,19 +8813,19 @@ end loop $while-continue|1 local.get $3 - local.get $5 + local.get $4 i64.gt_s if local.get $2 - local.get $4 + local.get $7 i64.ge_u if (result i64) - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i64.sub else local.get $2 @@ -8855,10 +8833,10 @@ i64.const 1 i64.shl local.set $2 - local.get $6 + local.get $5 i32.const 1 i32.shl - local.set $6 + local.set $5 local.get $3 i64.const 1 i64.sub @@ -8867,15 +8845,15 @@ end end local.get $2 - local.get $4 + local.get $7 i64.ge_u if - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i64.sub local.set $2 end @@ -8890,79 +8868,71 @@ i64.const 11 i64.shl i64.clz - local.tee $4 + local.tee $7 i64.sub local.set $3 local.get $2 - local.get $4 + local.get $7 i64.shl local.set $2 end end - local.get $1 - f64.abs - local.set $1 + local.get $2 + i64.const 4503599627370496 + i64.sub + local.get $3 + i64.const 52 + i64.shl + i64.or + local.get $2 + i64.const 1 + local.get $3 + i64.sub + i64.shr_u local.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 + select f64.reinterpret_i64 local.tee $0 local.get $0 f64.add - local.set $7 + local.set $8 local.get $0 local.get $1 + f64.abs + local.tee $1 f64.sub local.get $0 local.get $3 - local.get $5 + local.get $4 i64.eq if (result i32) i32.const 1 else 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 + local.get $4 local.get $3 i64.const 1 i64.add i64.eq - if (result i32) - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 - local.get $1 - local.get $7 - f64.eq - select - local.get $1 - local.get $7 - f64.lt - select - else - i32.const 0 - end + i32.and end select local.tee $0 f64.neg local.get $0 - local.get $8 + local.get $6 select ) (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) @@ -8971,16 +8941,16 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 i32) + (local $7 i32) + (local $8 f32) local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $7 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $5 + local.set $4 i32.const 1 local.get $1 local.get $1 @@ -8996,7 +8966,7 @@ i32.const 255 i32.eq i32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl select @@ -9021,7 +8991,7 @@ local.get $2 i32.const 31 i32.shr_u - local.set $8 + local.set $6 local.get $3 if (result i32) local.get $2 @@ -9043,33 +9013,33 @@ i32.shl end local.set $2 - local.get $5 + local.get $4 if (result i32) - local.get $4 + local.get $7 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $4 + local.get $7 i32.const 1 - local.get $5 local.get $4 + local.get $7 i32.const 9 i32.shl i32.clz i32.sub - local.tee $5 + local.tee $4 i32.sub i32.shl end - local.set $4 + local.set $7 block $do-break|0 local.get $3 - local.get $5 + local.get $4 i32.lt_s if - local.get $5 + local.get $4 local.get $3 i32.const 1 i32.add @@ -9080,19 +9050,19 @@ end loop $while-continue|1 local.get $3 - local.get $5 + local.get $4 i32.gt_s if local.get $2 - local.get $4 + local.get $7 i32.ge_u if (result i32) - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i32.sub else local.get $2 @@ -9100,10 +9070,10 @@ i32.const 1 i32.shl local.set $2 - local.get $6 + local.get $5 i32.const 1 i32.shl - local.set $6 + local.set $5 local.get $3 i32.const 1 i32.sub @@ -9112,15 +9082,15 @@ end end local.get $2 - local.get $4 + local.get $7 i32.ge_u if - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i32.sub local.set $2 end @@ -9131,11 +9101,11 @@ i32.const 8 i32.shl i32.clz - local.tee $4 + local.tee $7 i32.sub local.set $3 local.get $2 - local.get $4 + local.get $7 i32.shl local.set $2 else @@ -9143,80 +9113,72 @@ local.set $3 end end - local.get $1 - f32.abs - local.set $1 + local.get $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u local.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 + select f32.reinterpret_i32 local.tee $0 local.get $0 f32.add - local.set $7 + local.set $8 local.get $0 local.get $1 + f32.abs + local.tee $1 f32.sub local.get $0 local.get $3 - local.get $5 + local.get $4 i32.eq if (result i32) i32.const 1 else 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 + local.get $4 local.get $3 i32.const 1 i32.add i32.eq - if (result i32) - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 - local.get $1 - local.get $7 - f32.eq - select - local.get $1 - local.get $7 - f32.lt - select - else - i32.const 0 - end + i32.and end select local.tee $0 f32.neg local.get $0 - local.get $8 + local.get $6 select ) (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) (local $1 f64) (local $2 i64) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 f64) (local $9 f64) local.get $0 @@ -9225,18 +9187,18 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 31 i32.shr_u local.set $6 - local.get $5 + local.get $4 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1072243195 i32.le_u if - local.get $5 + local.get $4 i32.const 1045430272 i32.lt_u if @@ -9247,12 +9209,12 @@ local.get $0 local.get $0 f64.mul - local.tee $3 + local.tee $1 local.get $0 f64.mul - local.get $3 - local.get $3 - local.get $3 + local.get $1 + local.get $1 + local.get $1 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -9260,12 +9222,12 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $3 - local.get $3 - local.get $3 + local.get $1 + local.get $1 + local.get $1 f64.mul f64.mul - local.get $3 + local.get $1 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -9279,7 +9241,7 @@ f64.add return end - local.get $5 + local.get $4 i32.const 2146435072 i32.ge_u if @@ -9295,26 +9257,26 @@ 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 $5 + local.set $4 local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $3 + local.set $0 i32.const -1 - local.set $5 - local.get $7 + local.set $4 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -9322,14 +9284,14 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.add - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.add local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -9339,13 +9301,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $3 - local.get $7 + local.set $0 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -9353,14 +9315,14 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.sub - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.sub local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -9370,28 +9332,28 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $5 + local.get $4 br $~lib/math/rempio2|inlined.1 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 $6 + local.tee $4 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $7 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $7 f64.const 6.077100506506192e-11 f64.mul local.tee $3 @@ -9409,12 +9371,12 @@ i32.const 16 i32.gt_u if - local.get $4 + local.get $7 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 6.077100506303966e-11 f64.mul local.tee $1 @@ -9425,7 +9387,7 @@ f64.sub f64.sub local.set $3 - local.get $6 + local.get $4 local.get $0 local.get $3 f64.sub @@ -9442,12 +9404,12 @@ i32.const 49 i32.gt_u if (result f64) - local.get $4 + local.get $7 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 2.0222662487111665e-21 f64.mul local.tee $1 @@ -9474,25 +9436,25 @@ local.get $3 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $7 i32.trunc_f64_s br $~lib/math/rempio2|inlined.1 end i32.const 0 local.get $2 call $~lib/math/pio2_large_quot - local.tee $5 + local.tee $4 i32.sub - local.get $5 + local.get $4 local.get $6 select end - local.set $6 + local.set $4 global.get $~lib/math/rempio2_y0 local.set $3 global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 + local.set $7 + local.get $4 i32.const 1 i32.and if (result f64) @@ -9543,7 +9505,7 @@ f64.add f64.mul local.get $3 - local.get $4 + local.get $7 f64.mul f64.sub f64.add @@ -9558,7 +9520,7 @@ local.set $1 local.get $3 local.get $0 - local.get $4 + local.get $7 f64.const 0.5 f64.mul local.get $1 @@ -9586,7 +9548,7 @@ f64.mul f64.sub f64.mul - local.get $4 + local.get $7 f64.sub local.get $1 f64.const -0.16666666666666632 @@ -9597,36 +9559,36 @@ local.tee $0 f64.neg local.get $0 - local.get $6 + local.get $4 i32.const 2 i32.and select ) (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) + (local $2 f64) + (local $3 f64) + (local $4 f64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $6 i32.const 31 i32.shr_u - local.set $5 - local.get $1 + local.set $1 + local.get $6 i32.const 2147483647 i32.and - local.tee $2 + local.tee $6 i32.const 1061752794 i32.le_u if - local.get $2 + local.get $6 i32.const 964689920 i32.lt_u if @@ -9635,49 +9597,49 @@ end local.get $0 f64.promote_f32 - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $4 + local.get $2 f64.mul - local.set $8 + local.set $3 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 1081824209 i32.le_u if - local.get $2 + local.get $6 i32.const 1075235811 i32.le_u if - local.get $5 + local.get $1 if (result f32) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9691,26 +9653,26 @@ f64.promote_f32 f64.const 1.5707963267948966 f64.sub - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9723,58 +9685,58 @@ end local.get $0 f64.promote_f32 - local.tee $8 + local.tee $2 f64.const 3.141592653589793 f64.add - local.get $8 + local.get $2 f64.const 3.141592653589793 f64.sub - local.get $5 + local.get $1 select f64.neg - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $4 + local.get $2 f64.mul - local.set $8 + local.set $3 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 1088565717 i32.le_u if - local.get $2 + local.get $6 i32.const 1085271519 i32.le_u if - local.get $5 + local.get $1 if (result f32) local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.add - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9787,26 +9749,26 @@ f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9820,24 +9782,24 @@ end local.get $0 f64.promote_f32 - local.tee $8 + local.tee $2 f64.const 6.283185307179586 f64.add - local.get $8 + local.get $2 f64.const 6.283185307179586 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $4 + local.get $2 f64.mul - local.set $8 + local.set $3 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 2139095040 i32.ge_u if @@ -9847,150 +9809,150 @@ return end block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $2 - local.tee $1 + local.get $6 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $8 + local.tee $2 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $9 - local.get $8 - local.get $9 + local.set $3 + local.get $2 + local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $9 + local.get $3 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $9 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.1 end - local.get $1 + local.get $6 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $2 + local.tee $7 i32.const 63 i32.and i64.extend_i32_s - local.set $6 + 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 $9 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $1 + local.get $6 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s - local.tee $4 - local.get $2 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $2 + local.tee $5 + local.get $7 i64.load - local.get $6 + local.get $8 i64.shl - local.get $2 - i64.load offset=8 - local.tee $3 + local.get $9 i64.const 64 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or i64.mul - local.get $6 + local.get $8 i64.const 32 i64.gt_u if (result i64) - local.get $3 - local.get $6 + local.get $9 + local.get $8 i64.const 32 i64.sub i64.shl - local.get $2 + local.get $7 i64.load offset=16 i64.const 96 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or else - local.get $3 + local.get $9 i64.const 32 - local.get $6 + local.get $8 i64.sub i64.shr_u end - local.get $4 + local.get $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $5 i64.const 2 i64.shl - local.tee $6 + local.tee $8 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y i32.const 0 - local.get $4 + local.get $5 i64.const 62 i64.shr_u - local.get $6 + local.get $8 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $1 + local.tee $6 i32.sub + local.get $6 local.get $1 - local.get $5 select end local.set $1 global.get $~lib/math/rempio2f_y - local.set $7 + local.set $2 local.get $1 i32.const 1 i32.and if (result f32) - local.get $7 - local.get $7 + local.get $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9999,27 +9961,27 @@ f64.add f32.demote_f64 else - local.get $7 - local.get $7 - local.get $7 + local.get $2 + local.get $2 + local.get $2 f64.mul - local.tee $9 - local.get $7 + local.tee $3 + local.get $2 f64.mul - local.tee $8 - local.get $9 + local.tee $2 + local.get $3 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $8 - local.get $9 - local.get $9 + local.get $2 + local.get $3 + local.get $3 f64.mul f64.mul - local.get $9 + local.get $3 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -10037,21 +9999,21 @@ select return end - local.get $9 - local.get $8 - local.get $7 + local.get $2 + local.get $3 + local.get $4 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $8 - local.get $7 - local.get $7 + local.get $3 + local.get $4 + local.get $4 f64.mul f64.mul - local.get $7 + local.get $4 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -10062,50 +10024,50 @@ ) (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i64) + (local $4 i32) + (local $5 i64) + (local $6 f64) block $__inlined_func$~lib/math/NativeMath.sinh (result f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $6 + local.tee $5 f64.reinterpret_i64 - local.set $3 + local.set $6 f64.const 0.5 local.get $0 f64.copysign - local.set $4 - local.get $6 + local.set $3 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 1082535490 i32.lt_u if - local.get $3 + local.get $6 call $~lib/math/NativeMath.expm1 - local.set $3 - local.get $5 + local.set $6 + local.get $4 i32.const 1072693248 i32.lt_u if local.get $0 - local.get $5 + local.get $4 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.sinh drop - local.get $4 - local.get $3 local.get $3 + local.get $6 + local.get $6 f64.add - local.get $3 - local.get $3 + local.get $6 + local.get $6 f64.mul - local.get $3 + local.get $6 f64.const 1 f64.add f64.div @@ -10113,10 +10075,10 @@ f64.mul br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $4 - local.get $3 - local.get $3 local.get $3 + local.get $6 + local.get $6 + local.get $6 f64.const 1 f64.add f64.div @@ -10124,12 +10086,12 @@ f64.mul br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $3 + local.get $6 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp - local.get $4 - local.get $4 + local.get $3 + local.get $3 f64.add f64.const 2247116418577894884661631e283 f64.mul @@ -10152,45 +10114,45 @@ ) (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f32) - (local $4 f32) - (local $5 i32) + (local $4 i32) + (local $5 f32) block $__inlined_func$~lib/math/NativeMathf.sinh (result f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 f32.reinterpret_i32 - local.set $3 + local.set $5 f32.const 0.5 local.get $0 f32.copysign - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 1118925335 i32.lt_u if - local.get $3 - call $~lib/math/NativeMathf.expm1 - local.set $3 local.get $5 + call $~lib/math/NativeMathf.expm1 + local.set $5 + local.get $4 i32.const 1065353216 i32.lt_u if local.get $0 - local.get $5 + local.get $4 i32.const 964689920 i32.lt_u br_if $__inlined_func$~lib/math/NativeMathf.sinh drop - local.get $4 - local.get $3 local.get $3 + local.get $5 + local.get $5 f32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 f32.mul - local.get $3 + local.get $5 f32.const 1 f32.add f32.div @@ -10198,10 +10160,10 @@ f32.mul br $__inlined_func$~lib/math/NativeMathf.sinh end - local.get $4 - local.get $3 - local.get $3 local.get $3 + local.get $5 + local.get $5 + local.get $5 f32.const 1 f32.add f32.div @@ -10209,12 +10171,12 @@ f32.mul br $__inlined_func$~lib/math/NativeMathf.sinh end - local.get $3 + local.get $5 f32.const 162.88958740234375 f32.sub call $~lib/math/NativeMathf.exp - local.get $4 - local.get $4 + local.get $3 + local.get $3 f32.add f32.const 1661534994731144841129758e11 f32.mul @@ -10227,25 +10189,25 @@ call $std/math/check ) (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 f64) - (local $4 f64) + (local $3 i32) + (local $4 i32) (local $5 f64) - (local $6 i32) - (local $7 i32) + (local $6 f64) + (local $7 f64) local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $3 i32.const 2147483647 i32.and i32.const 1072010280 i32.ge_u - local.tee $7 + local.tee $4 if f64.const 0.7853981633974483 - local.get $6 + local.get $3 i32.const 0 i32.lt_s if (result f64) @@ -10269,22 +10231,22 @@ local.get $0 local.get $0 f64.mul - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f64.mul - local.set $3 + local.set $6 local.get $0 local.get $1 - local.get $4 - local.get $4 + local.get $5 + local.get $5 local.get $0 f64.mul - local.tee $5 - local.get $3 - local.get $3 - local.get $3 - local.get $3 - local.get $3 + 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 @@ -10301,12 +10263,12 @@ f64.mul f64.const 0.13333333333320124 f64.add - local.get $4 - local.get $3 - local.get $3 - local.get $3 - local.get $3 - local.get $3 + 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 @@ -10330,17 +10292,17 @@ f64.add f64.mul f64.add - local.get $5 + local.get $7 f64.const 0.3333333333333341 f64.mul f64.add - local.tee $3 + local.tee $1 f64.add - local.set $1 - local.get $7 + local.set $5 + local.get $4 if f64.const 1 - local.get $6 + local.get $3 i32.const 30 i32.shr_s i32.const 2 @@ -10349,16 +10311,16 @@ f64.sub local.get $2 f64.convert_i32_s - local.tee $4 + local.tee $6 local.get $0 - local.get $1 - local.get $1 + local.get $5 + local.get $5 f64.mul - local.get $1 - local.get $4 + local.get $5 + local.get $6 f64.add f64.div - local.get $3 + local.get $1 f64.sub f64.sub f64.const 2 @@ -10371,32 +10333,32 @@ i32.const 1 i32.eq if - local.get $1 + local.get $5 return end f64.const -1 - local.get $1 + local.get $5 f64.div - local.tee $5 + local.tee $6 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $4 + local.tee $7 + local.get $6 + local.get $7 local.get $5 - local.get $4 - local.get $1 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $1 + local.tee $5 f64.mul f64.const 1 f64.add - local.get $4 - local.get $3 + local.get $7 local.get $1 + local.get $5 local.get $0 f64.sub f64.sub @@ -10408,20 +10370,21 @@ (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) (local $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 f64) - (local $7 f64) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) local.get $0 i64.reinterpret_f64 - local.tee $4 + 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 @@ -10451,34 +10414,33 @@ f64.sub return end - local.set $2 block $~lib/math/rempio2|inlined.2 - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 + local.tee $7 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $3 - local.get $2 + local.set $2 + local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $1 + local.set $0 i32.const -1 - local.set $3 - local.get $5 + local.set $2 + local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -10486,7 +10448,7 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.add local.tee $1 @@ -10503,13 +10465,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $1 - local.get $5 + local.set $0 + local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -10517,7 +10479,7 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.sub local.tee $1 @@ -10536,28 +10498,28 @@ global.set $~lib/math/rempio2_y1 br $~lib/math/rempio2|inlined.2 end - local.get $5 + local.get $7 i32.const 1094263291 i32.lt_u if - local.get $5 + local.get $7 i32.const 20 i32.shr_u - local.tee $3 + local.tee $2 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $6 + local.tee $4 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $6 + local.get $4 f64.const 6.077100506506192e-11 f64.mul - local.tee $7 + local.tee $5 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10572,25 +10534,25 @@ i32.const 16 i32.gt_u if - local.get $6 + local.get $4 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $6 + local.get $4 f64.const 6.077100506303966e-11 f64.mul - local.tee $7 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $7 + local.get $1 f64.sub f64.sub - local.set $7 - local.get $3 + local.set $5 + local.get $2 local.get $0 - local.get $7 + local.get $5 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10605,24 +10567,24 @@ i32.const 49 i32.gt_u if (result f64) - local.get $6 + local.get $4 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $6 + local.get $4 f64.const 2.0222662487111665e-21 f64.mul - local.tee $7 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $7 + local.get $1 f64.sub f64.sub - local.set $7 + local.set $5 local.get $0 - local.get $7 + local.get $5 f64.sub else local.get $1 @@ -10634,28 +10596,28 @@ local.get $0 local.get $1 f64.sub - local.get $7 + local.get $5 f64.sub global.set $~lib/math/rempio2_y1 - local.get $6 + local.get $4 i32.trunc_f64_s - local.set $3 + local.set $2 br $~lib/math/rempio2|inlined.2 end i32.const 0 - local.get $4 + local.get $3 call $~lib/math/pio2_large_quot - local.tee $3 + local.tee $2 i32.sub - local.get $3 local.get $2 + local.get $6 select - local.set $3 + local.set $2 end global.get $~lib/math/rempio2_y0 global.get $~lib/math/rempio2_y1 i32.const 1 - local.get $3 + local.get $2 i32.const 1 i32.and i32.const 1 @@ -10665,30 +10627,30 @@ ) (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) + (local $2 f64) + (local $3 f64) + (local $4 f64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) block $folding-inner1 block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $6 i32.const 31 i32.shr_u - local.set $5 - local.get $1 + local.set $1 + local.get $6 i32.const 2147483647 i32.and - local.tee $2 + local.tee $6 i32.const 1061752794 i32.le_u if - local.get $2 + local.get $6 i32.const 964689920 i32.lt_u if @@ -10697,112 +10659,112 @@ end local.get $0 f64.promote_f32 - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 1081824209 i32.le_u if - local.get $2 + local.get $6 i32.const 1075235811 i32.le_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 1.5707963267948966 f64.add - local.get $9 + local.get $2 f64.const 1.5707963267948966 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 3.141592653589793 f64.add - local.get $9 + local.get $2 f64.const 3.141592653589793 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner0 end unreachable end - local.get $2 + local.get $6 i32.const 1088565717 i32.le_u if - local.get $2 + local.get $6 i32.const 1085271519 i32.le_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 4.71238898038469 f64.add - local.get $9 + local.get $2 f64.const 4.71238898038469 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 6.283185307179586 f64.add - local.get $9 + local.get $2 f64.const 6.283185307179586 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner0 end unreachable end - local.get $2 + local.get $6 i32.const 2139095040 i32.ge_u if @@ -10812,155 +10774,155 @@ return end block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $2 - local.tee $1 + local.get $6 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $7 - local.get $9 - local.get $7 + local.set $3 + local.get $2 + local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $7 + local.get $3 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $7 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.2 end - local.get $1 + local.get $6 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $2 + local.tee $7 i32.const 63 i32.and i64.extend_i32_s - local.set $6 + 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 $9 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $1 + local.get $6 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s - local.tee $4 - local.get $2 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $2 + local.tee $5 + local.get $7 i64.load - local.get $6 + local.get $8 i64.shl - local.get $2 - i64.load offset=8 - local.tee $3 + local.get $9 i64.const 64 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or i64.mul - local.get $6 + local.get $8 i64.const 32 i64.gt_u if (result i64) - local.get $3 - local.get $6 + local.get $9 + local.get $8 i64.const 32 i64.sub i64.shl - local.get $2 + local.get $7 i64.load offset=16 i64.const 96 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or else - local.get $3 + local.get $9 i64.const 32 - local.get $6 + local.get $8 i64.sub i64.shr_u end - local.get $4 + local.get $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $5 i64.const 2 i64.shl - local.tee $6 + local.tee $8 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y i32.const 0 - local.get $4 + local.get $5 i64.const 62 i64.shr_u - local.get $6 + local.get $8 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $1 + local.tee $6 i32.sub + local.get $6 local.get $1 - local.get $5 select end local.set $1 global.get $~lib/math/rempio2f_y - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 f64.const -1 - local.get $9 - local.get $8 - local.get $9 + local.get $2 + local.get $3 + local.get $2 f64.mul - local.tee $9 - local.get $8 + local.tee $2 + local.get $3 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $9 - local.get $7 + local.get $2 + local.get $4 f64.mul - local.get $8 + local.get $3 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $7 - local.get $8 + local.get $4 + local.get $3 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -10969,9 +10931,9 @@ f64.add f64.mul f64.add - local.tee $9 + local.tee $2 f64.div - local.get $9 + local.get $2 local.get $1 i32.const 1 i32.and @@ -10979,28 +10941,28 @@ f32.demote_f64 return end - local.get $9 - local.get $8 - local.get $9 + local.get $2 + local.get $3 + local.get $2 f64.mul - local.tee $9 - local.get $8 + local.tee $2 + local.get $3 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $9 - local.get $7 + local.get $2 + local.get $4 f64.mul - local.get $8 + local.get $3 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $7 - local.get $8 + local.get $4 + local.get $3 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11013,28 +10975,28 @@ return end f64.const -1 - local.get $9 - local.get $8 - local.get $9 + local.get $2 + local.get $3 + local.get $2 f64.mul - local.tee $9 - local.get $8 + local.tee $2 + local.get $3 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $9 - local.get $7 + local.get $2 + local.get $4 f64.mul - local.get $8 + local.get $3 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $7 - local.get $8 + local.get $4 + local.get $3 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11047,38 +11009,38 @@ f32.demote_f64 ) (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) + (local $3 i32) + (local $4 i64) + (local $5 f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $5 + local.tee $4 f64.reinterpret_i64 - local.set $3 - local.get $5 + local.set $5 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 1071748074 i32.gt_u if (result f64) - local.get $4 + local.get $3 i32.const 1077149696 i32.gt_u if (result f64) f64.const 1 f64.const 0 - local.get $3 + local.get $5 f64.div f64.sub else f64.const 1 f64.const 2 - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add call $~lib/math/NativeMath.expm1 f64.const 2 @@ -11087,36 +11049,36 @@ f64.sub end else - local.get $4 + local.get $3 i32.const 1070618798 i32.gt_u if (result f64) - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add call $~lib/math/NativeMath.expm1 - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 f64.const 2 f64.add f64.div else - local.get $4 + local.get $3 i32.const 1048576 i32.ge_u if (result f64) - local.get $3 + local.get $5 f64.const -2 f64.mul call $~lib/math/NativeMath.expm1 - local.tee $3 + local.tee $5 f64.neg - local.get $3 + local.get $5 f64.const 2 f64.add f64.div else - local.get $3 + local.get $5 end end end @@ -11136,33 +11098,33 @@ end ) (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 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 $3 - local.get $4 + local.set $4 + local.get $3 i32.const 1057791828 i32.gt_u if (result f32) - local.get $4 + local.get $3 i32.const 1092616192 i32.gt_u if (result f32) f32.const 0 - local.get $3 + local.get $4 f32.div f32.const 1 f32.add else f32.const 1 f32.const 2 - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.add call $~lib/math/NativeMathf.expm1 f32.const 2 @@ -11171,36 +11133,36 @@ f32.sub end else - local.get $4 + local.get $3 i32.const 1048757624 i32.gt_u if (result f32) - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.add call $~lib/math/NativeMathf.expm1 - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.const 2 f32.add f32.div else - local.get $4 + local.get $3 i32.const 8388608 i32.ge_u if (result f32) - local.get $3 + local.get $4 f32.const -2 f32.mul call $~lib/math/NativeMathf.expm1 - local.tee $3 + local.tee $4 f32.neg - local.get $3 + local.get $4 f32.const 2 f32.add f32.div else - local.get $3 + local.get $4 end end end @@ -11214,11 +11176,11 @@ (local $1 f64) (local $2 f64) (local $3 i64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 f64) - (local $8 i32) + (local $8 f64) (local $9 f64) (local $10 f64) local.get $0 @@ -11227,18 +11189,18 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 31 i32.shr_u local.set $6 - local.get $5 + local.get $4 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1072243195 i32.le_u if - local.get $5 + local.get $4 i32.const 1044816030 i32.lt_u if @@ -11249,18 +11211,16 @@ return end local.get $0 - local.tee $1 + local.get $0 local.get $0 f64.mul - local.tee $0 - local.set $4 - local.get $1 - local.get $4 - local.get $1 + local.tee $1 + local.tee $2 + local.get $0 f64.mul - local.get $4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 + local.get $2 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -11268,12 +11228,12 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 + local.get $2 f64.mul f64.mul - local.get $4 + local.get $2 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -11287,7 +11247,7 @@ f64.add global.set $~lib/math/NativeMath.sincos_sin f64.const 1 - local.get $0 + local.get $1 f64.const 0.5 f64.mul local.tee $2 @@ -11298,10 +11258,10 @@ f64.sub local.get $2 f64.sub - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.get $1 + local.get $1 + local.get $1 + local.get $1 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -11310,14 +11270,14 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.mul - local.tee $4 - local.get $4 + local.tee $2 + local.get $2 f64.mul - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -11328,7 +11288,7 @@ f64.mul f64.add f64.mul - local.get $1 + local.get $0 f64.const 0 f64.mul f64.sub @@ -11337,7 +11297,7 @@ global.set $~lib/math/NativeMath.sincos_cos return end - local.get $5 + local.get $4 i32.const 2139095040 i32.ge_u if @@ -11357,26 +11317,26 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $8 + local.tee $5 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $5 + local.set $4 local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $1 + local.set $0 i32.const -1 - local.set $5 - local.get $8 + local.set $4 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -11384,7 +11344,7 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.add local.tee $1 @@ -11401,13 +11361,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $1 - local.get $8 + local.set $0 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -11415,7 +11375,7 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.sub local.tee $1 @@ -11432,28 +11392,28 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $5 + local.get $4 br $~lib/math/rempio2|inlined.3 end - local.get $8 + local.get $5 i32.const 1094263291 i32.lt_u if - local.get $8 + local.get $5 i32.const 20 i32.shr_u - local.tee $6 + local.tee $4 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $7 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $7 f64.const 6.077100506506192e-11 f64.mul local.tee $1 @@ -11471,23 +11431,23 @@ i32.const 16 i32.gt_u if - local.get $4 + local.get $7 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 6.077100506303966e-11 f64.mul - local.tee $2 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $2 + local.get $1 f64.sub f64.sub local.set $1 - local.get $6 + local.get $4 local.get $0 local.get $1 f64.sub @@ -11504,19 +11464,19 @@ i32.const 49 i32.gt_u if (result f64) - local.get $4 + local.get $7 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 2.0222662487111665e-21 f64.mul - local.tee $2 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $2 + local.get $1 f64.sub f64.sub local.set $1 @@ -11536,36 +11496,36 @@ local.get $1 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $7 i32.trunc_f64_s br $~lib/math/rempio2|inlined.3 end i32.const 0 local.get $3 call $~lib/math/pio2_large_quot - local.tee $5 + local.tee $4 i32.sub - local.get $5 + local.get $4 local.get $6 select end - local.set $6 + local.set $4 global.get $~lib/math/rempio2_y0 - local.tee $2 - local.get $2 + local.tee $8 + local.get $8 f64.mul - local.tee $1 + local.tee $9 local.tee $0 - local.get $2 + local.get $8 f64.mul - local.set $4 - local.get $2 + local.set $2 + local.get $8 local.get $0 global.get $~lib/math/rempio2_y1 - local.tee $7 + local.tee $1 f64.const 0.5 f64.mul - local.get $4 + local.get $2 local.get $0 local.get $0 f64.const 2.7557313707070068e-06 @@ -11590,31 +11550,31 @@ f64.mul f64.sub f64.mul - local.get $7 + local.get $1 f64.sub - local.get $4 + local.get $2 f64.const -0.16666666666666632 f64.mul f64.sub f64.sub - local.tee $4 + local.tee $2 local.set $0 f64.const 1 - local.get $1 + local.get $9 f64.const 0.5 f64.mul local.tee $10 f64.sub - local.tee $9 + local.tee $7 f64.const 1 - local.get $9 + local.get $7 f64.sub local.get $10 f64.sub - local.get $1 - local.get $1 - local.get $1 - local.get $1 + local.get $9 + local.get $9 + local.get $9 + local.get $9 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -11623,14 +11583,14 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $9 + local.get $9 local.get $9 f64.mul - local.get $1 - local.get $1 + local.tee $7 + local.get $7 + f64.mul + local.get $9 + local.get $9 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -11641,24 +11601,24 @@ f64.mul f64.add f64.mul - local.get $2 - local.get $7 + local.get $8 + local.get $1 f64.mul f64.sub f64.add f64.add local.set $1 - local.get $6 + local.get $4 i32.const 1 i32.and if local.get $1 local.set $0 - local.get $4 + local.get $2 f64.neg local.set $1 end - local.get $6 + local.get $4 i32.const 2 i32.and if (result f64) @@ -11701,15 +11661,15 @@ end ) (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) + (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 f64) + (local $4 f64) + (local $5 i64) local.get $0 local.get $1 f64.add - local.tee $5 - local.get $5 + local.tee $4 + local.get $4 f64.sub f64.const 0 f64.ne @@ -11719,39 +11679,39 @@ end local.get $0 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $3 + local.tee $5 i64.const 1053 i64.le_u if (result i32) local.get $0 i32.trunc_f64_s else - local.get $3 + local.get $5 i64.const 1106 i64.le_u if (result i32) i32.const 0 - local.get $2 + local.get $3 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or - local.get $3 + local.get $5 i64.const 1043 i64.sub i64.shl i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.sub - local.get $4 local.get $2 + local.get $3 i64.const 63 i64.shr_u i32.wrap_i64 @@ -11762,39 +11722,39 @@ end local.get $1 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $3 + local.tee $5 i64.const 1053 i64.le_u if (result i32) local.get $1 i32.trunc_f64_s else - local.get $3 + local.get $5 i64.const 1106 i64.le_u if (result i32) i32.const 0 - local.get $2 + local.get $3 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or - local.get $3 + local.get $5 i64.const 1043 i64.sub i64.shl i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.sub - local.get $4 local.get $2 + local.get $3 i64.const 63 i64.shr_u i32.wrap_i64 @@ -12212,10 +12172,10 @@ (local $0 f64) (local $1 i32) (local $2 i64) - (local $3 i64) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 f32) + (local $5 f32) + (local $6 i64) f64.const 2.718281828459045 global.get $~lib/bindings/Math/E f64.const 0 @@ -18041,10 +18001,9 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 - call $~lib/math/NativeMathf.atan2 f32.const -1.0585895776748657 f32.const -0.22352588176727295 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18056,10 +18015,9 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 - call $~lib/math/NativeMathf.atan2 f32.const 2.686873435974121 f32.const 0.09464472532272339 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18071,10 +18029,9 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 - call $~lib/math/NativeMathf.atan2 f32.const -1.8893001079559326 f32.const -0.21941901743412018 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18086,10 +18043,9 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 - call $~lib/math/NativeMathf.atan2 f32.const -0.9605468511581421 f32.const 0.46015575528144836 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18101,10 +18057,9 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 - call $~lib/math/NativeMathf.atan2 f32.const 1.0919123888015747 f32.const -0.05708503723144531 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18116,10 +18071,9 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 - call $~lib/math/NativeMathf.atan2 f32.const -1.4685084819793701 f32.const 0.19611206650733948 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18131,10 +18085,9 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 - call $~lib/math/NativeMathf.atan2 f32.const 1.5641601085662842 f32.const 0.48143187165260315 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18146,10 +18099,9 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 - call $~lib/math/NativeMathf.atan2 f32.const -0.10281659662723541 f32.const -0.4216274917125702 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18161,10 +18113,9 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 - call $~lib/math/NativeMathf.atan2 f32.const 0.29697975516319275 f32.const 0.2322007566690445 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18176,10 +18127,9 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 - call $~lib/math/NativeMathf.atan2 f32.const -1.5131611824035645 f32.const 0.16620726883411407 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18191,10 +18141,9 @@ end f32.const 0 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18206,10 +18155,9 @@ end f32.const 0 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18221,10 +18169,9 @@ end f32.const 0 f32.const -1 - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18236,10 +18183,9 @@ end f32.const 0 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18251,10 +18197,9 @@ end f32.const 0 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18266,10 +18211,9 @@ end f32.const 0 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18281,10 +18225,9 @@ end f32.const -0 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18296,10 +18239,9 @@ end f32.const -0 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18311,10 +18253,9 @@ end f32.const -0 f32.const -1 - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18326,10 +18267,9 @@ end f32.const -0 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18341,10 +18281,9 @@ end f32.const -0 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18356,10 +18295,9 @@ end f32.const -0 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18371,10 +18309,9 @@ end f32.const -1 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18386,10 +18323,9 @@ end f32.const -1 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18401,10 +18337,9 @@ end f32.const 1 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18416,10 +18351,9 @@ end f32.const 1 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18431,10 +18365,9 @@ end f32.const -1 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18446,10 +18379,9 @@ end f32.const 1 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18461,10 +18393,9 @@ end f32.const -1 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18476,10 +18407,9 @@ end f32.const 1 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18491,10 +18421,9 @@ end f32.const inf f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18506,10 +18435,9 @@ end f32.const -inf f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18521,10 +18449,9 @@ end f32.const inf f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0.7853981852531433 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18536,10 +18463,9 @@ end f32.const inf f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 2.356194496154785 f32.const 0.02500828728079796 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18551,10 +18477,9 @@ end f32.const -inf f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0.7853981852531433 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18566,10 +18491,9 @@ end f32.const -inf f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -2.356194496154785 f32.const -0.02500828728079796 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18581,10 +18505,9 @@ end f32.const 5.877471754111438e-39 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18596,10 +18519,9 @@ end f32.const 1 f32.const 1701411834604692317316873e14 - call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18610,19 +18532,9 @@ unreachable end f64.const -8.06684839057968 - call $~lib/math/NativeMath.cbrt f64.const -2.0055552545020245 f64.const 0.46667951345443726 - call $std/math/check - if (result i32) - f64.const -8.06684839057968 - call $~lib/bindings/Math/cbrt - f64.const -2.0055552545020245 - f64.const 0.46667951345443726 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18633,19 +18545,9 @@ unreachable end f64.const 4.345239849338305 - call $~lib/math/NativeMath.cbrt f64.const 1.6318162410515635 f64.const -0.08160271495580673 - call $std/math/check - if (result i32) - f64.const 4.345239849338305 - call $~lib/bindings/Math/cbrt - f64.const 1.6318162410515635 - f64.const -0.08160271495580673 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18656,19 +18558,9 @@ unreachable end f64.const -8.38143342755525 - call $~lib/math/NativeMath.cbrt f64.const -2.031293910673361 f64.const -0.048101816326379776 - call $std/math/check - if (result i32) - f64.const -8.38143342755525 - call $~lib/bindings/Math/cbrt - f64.const -2.031293910673361 - f64.const -0.048101816326379776 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18679,19 +18571,9 @@ unreachable end f64.const -6.531673581913484 - call $~lib/math/NativeMath.cbrt f64.const -1.8692820012204925 f64.const 0.08624018728733063 - call $std/math/check - if (result i32) - f64.const -6.531673581913484 - call $~lib/bindings/Math/cbrt - f64.const -1.8692820012204925 - f64.const 0.08624018728733063 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18702,19 +18584,9 @@ unreachable end f64.const 9.267056966972586 - call $~lib/math/NativeMath.cbrt f64.const 2.100457720859702 f64.const -0.2722989022731781 - call $std/math/check - if (result i32) - f64.const 9.267056966972586 - call $~lib/bindings/Math/cbrt - f64.const 2.100457720859702 - f64.const -0.2722989022731781 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18725,19 +18597,9 @@ unreachable end f64.const 0.6619858980995045 - call $~lib/math/NativeMath.cbrt f64.const 0.8715311470455973 f64.const 0.4414918124675751 - call $std/math/check - if (result i32) - f64.const 0.6619858980995045 - call $~lib/bindings/Math/cbrt - f64.const 0.8715311470455973 - f64.const 0.4414918124675751 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18748,19 +18610,9 @@ unreachable end f64.const -0.4066039223853553 - call $~lib/math/NativeMath.cbrt f64.const -0.740839030300223 f64.const 0.016453813761472702 - call $std/math/check - if (result i32) - f64.const -0.4066039223853553 - call $~lib/bindings/Math/cbrt - f64.const -0.740839030300223 - f64.const 0.016453813761472702 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18771,19 +18623,9 @@ unreachable end f64.const 0.5617597462207241 - call $~lib/math/NativeMath.cbrt f64.const 0.8251195400559286 f64.const 0.30680638551712036 - call $std/math/check - if (result i32) - f64.const 0.5617597462207241 - call $~lib/bindings/Math/cbrt - f64.const 0.8251195400559286 - f64.const 0.30680638551712036 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18794,19 +18636,9 @@ unreachable end f64.const 0.7741522965913037 - call $~lib/math/NativeMath.cbrt f64.const 0.9182102478959914 f64.const 0.06543998420238495 - call $std/math/check - if (result i32) - f64.const 0.7741522965913037 - call $~lib/bindings/Math/cbrt - f64.const 0.9182102478959914 - f64.const 0.06543998420238495 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18817,19 +18649,9 @@ unreachable end f64.const -0.6787637026394024 - call $~lib/math/NativeMath.cbrt f64.const -0.8788326906580094 f64.const -0.2016713172197342 - call $std/math/check - if (result i32) - f64.const -0.6787637026394024 - call $~lib/bindings/Math/cbrt - f64.const -0.8788326906580094 - f64.const -0.2016713172197342 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18840,19 +18662,9 @@ unreachable end f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.cbrt f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const nan:0x8000000000000 - call $~lib/bindings/Math/cbrt - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18863,19 +18675,9 @@ unreachable end f64.const inf - call $~lib/math/NativeMath.cbrt f64.const inf f64.const 0 - call $std/math/check - if (result i32) - f64.const inf - call $~lib/bindings/Math/cbrt - f64.const inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18886,19 +18688,9 @@ unreachable end f64.const -inf - call $~lib/math/NativeMath.cbrt f64.const -inf f64.const 0 - call $std/math/check - if (result i32) - f64.const -inf - call $~lib/bindings/Math/cbrt - f64.const -inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18909,19 +18701,9 @@ unreachable end f64.const 0 - call $~lib/math/NativeMath.cbrt f64.const 0 f64.const 0 - call $std/math/check - if (result i32) - f64.const 0 - call $~lib/bindings/Math/cbrt - f64.const 0 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18932,19 +18714,9 @@ unreachable end f64.const -0 - call $~lib/math/NativeMath.cbrt f64.const -0 f64.const 0 - call $std/math/check - if (result i32) - f64.const -0 - call $~lib/bindings/Math/cbrt - f64.const -0 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18955,19 +18727,9 @@ unreachable end f64.const 9.313225746154785e-10 - call $~lib/math/NativeMath.cbrt f64.const 0.0009765625 f64.const 0 - call $std/math/check - if (result i32) - f64.const 9.313225746154785e-10 - call $~lib/bindings/Math/cbrt - f64.const 0.0009765625 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18978,19 +18740,9 @@ unreachable end f64.const -9.313225746154785e-10 - call $~lib/math/NativeMath.cbrt f64.const -0.0009765625 f64.const 0 - call $std/math/check - if (result i32) - f64.const -9.313225746154785e-10 - call $~lib/bindings/Math/cbrt - f64.const -0.0009765625 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -19001,19 +18753,9 @@ unreachable end f64.const 1 - call $~lib/math/NativeMath.cbrt f64.const 1 f64.const 0 - call $std/math/check - if (result i32) - f64.const 1 - call $~lib/bindings/Math/cbrt - f64.const 1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -19024,19 +18766,9 @@ unreachable end f64.const -1 - call $~lib/math/NativeMath.cbrt f64.const -1 f64.const 0 - call $std/math/check - if (result i32) - f64.const -1 - call $~lib/bindings/Math/cbrt - f64.const -1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -19047,19 +18779,9 @@ unreachable end f64.const 8 - call $~lib/math/NativeMath.cbrt f64.const 2 f64.const 0 - call $std/math/check - if (result i32) - f64.const 8 - call $~lib/bindings/Math/cbrt - f64.const 2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -29197,10 +28919,9 @@ end f64.const -8.06684839057968 f64.const 4.535662560676869 - call $~lib/math/NativeMath.hypot f64.const 9.25452742288464 f64.const -0.31188681721687317 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29212,10 +28933,9 @@ end f64.const 4.345239849338305 f64.const -8.88799136300345 - call $~lib/math/NativeMath.hypot f64.const 9.893305808328252 f64.const 0.4593673348426819 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29227,10 +28947,9 @@ end f64.const -8.38143342755525 f64.const -2.763607337379588 - call $~lib/math/NativeMath.hypot f64.const 8.825301797432132 f64.const -0.1701754331588745 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29242,10 +28961,9 @@ end f64.const -6.531673581913484 f64.const 4.567535276842744 - call $~lib/math/NativeMath.hypot f64.const 7.970265885519092 f64.const -0.3176782727241516 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29257,10 +28975,9 @@ end f64.const 9.267056966972586 f64.const 4.811392084359796 - call $~lib/math/NativeMath.hypot f64.const 10.441639651824575 f64.const -0.2693633437156677 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29272,10 +28989,9 @@ end f64.const -6.450045556060236 f64.const 0.6620717923376739 - call $~lib/math/NativeMath.hypot f64.const 6.483936052542593 f64.const 0.35618898272514343 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29287,10 +29003,9 @@ end f64.const 7.858890253041697 f64.const 0.05215452675006225 - call $~lib/math/NativeMath.hypot f64.const 7.859063309581766 f64.const 0.08044655621051788 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29302,10 +29017,9 @@ end f64.const -0.792054511984896 f64.const 7.67640268511754 - call $~lib/math/NativeMath.hypot f64.const 7.717156764899584 f64.const 0.05178084969520569 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29317,10 +29031,9 @@ end f64.const 0.615702673197924 f64.const 2.0119025790324803 - call $~lib/math/NativeMath.hypot f64.const 2.104006123874314 f64.const -0.0918039008975029 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29332,10 +29045,9 @@ end f64.const -0.5587586823609152 f64.const 0.03223983060263804 - call $~lib/math/NativeMath.hypot f64.const 0.5596880129062913 f64.const 0.1383407711982727 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29347,10 +29059,9 @@ end f64.const 3 f64.const 4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29362,10 +29073,9 @@ end f64.const -3 f64.const 4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29377,10 +29087,9 @@ end f64.const 4 f64.const 3 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29392,10 +29101,9 @@ end f64.const 4 f64.const -3 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29407,10 +29115,9 @@ end f64.const -3 f64.const -4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29422,10 +29129,9 @@ end f64.const 1797693134862315708145274e284 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29437,10 +29143,9 @@ end f64.const 1797693134862315708145274e284 f64.const -0 - call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29452,10 +29157,9 @@ end f64.const 5e-324 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29467,10 +29171,9 @@ end f64.const 5e-324 f64.const -0 - call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29482,10 +29185,9 @@ end f64.const inf f64.const 1 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29497,10 +29199,9 @@ end f64.const 1 f64.const inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29512,10 +29213,9 @@ end f64.const inf f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29527,10 +29227,9 @@ end f64.const nan:0x8000000000000 f64.const inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29542,10 +29241,9 @@ end f64.const -inf f64.const 1 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29557,10 +29255,9 @@ end f64.const 1 f64.const -inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29572,10 +29269,9 @@ end f64.const -inf f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29587,10 +29283,9 @@ end f64.const nan:0x8000000000000 f64.const -inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29602,10 +29297,9 @@ end f64.const nan:0x8000000000000 f64.const 1 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29617,10 +29311,9 @@ end f64.const 1 f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29632,10 +29325,9 @@ end f64.const nan:0x8000000000000 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29647,10 +29339,9 @@ end f64.const 0 f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -30705,19 +30396,9 @@ unreachable end f64.const -8.06684839057968 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -8.06684839057968 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30728,19 +30409,9 @@ unreachable end f64.const 4.345239849338305 - call $~lib/math/NativeMath.log10 f64.const 0.6380137537120029 f64.const -0.2088824063539505 - call $std/math/check - if (result i32) - f64.const 4.345239849338305 - call $~lib/bindings/Math/log10 - f64.const 0.6380137537120029 - f64.const -0.2088824063539505 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30751,19 +30422,9 @@ unreachable end f64.const -8.38143342755525 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -8.38143342755525 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30774,19 +30435,9 @@ unreachable end f64.const -6.531673581913484 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -6.531673581913484 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30797,19 +30448,9 @@ unreachable end f64.const 9.267056966972586 - call $~lib/math/NativeMath.log10 f64.const 0.9669418327487274 f64.const -0.06120431795716286 - call $std/math/check - if (result i32) - f64.const 9.267056966972586 - call $~lib/bindings/Math/log10 - f64.const 0.9669418327487274 - f64.const -0.06120431795716286 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30820,19 +30461,9 @@ unreachable end f64.const 0.6619858980995045 - call $~lib/math/NativeMath.log10 f64.const -0.17915126198447093 f64.const 0.39090874791145325 - call $std/math/check - if (result i32) - f64.const 0.6619858980995045 - call $~lib/bindings/Math/log10 - f64.const -0.17915126198447093 - f64.const 0.39090874791145325 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30843,19 +30474,9 @@ unreachable end f64.const -0.4066039223853553 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -0.4066039223853553 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30866,19 +30487,9 @@ unreachable end f64.const 0.5617597462207241 - call $~lib/math/NativeMath.log10 f64.const -0.25044938407454437 f64.const -0.3046841621398926 - call $std/math/check - if (result i32) - f64.const 0.5617597462207241 - call $~lib/bindings/Math/log10 - f64.const -0.25044938407454437 - f64.const -0.3046841621398926 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30889,19 +30500,9 @@ unreachable end f64.const 0.7741522965913037 - call $~lib/math/NativeMath.log10 f64.const -0.11117359349943837 f64.const -0.31503361463546753 - call $std/math/check - if (result i32) - f64.const 0.7741522965913037 - call $~lib/bindings/Math/log10 - f64.const -0.11117359349943837 - f64.const -0.31503361463546753 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30912,19 +30513,9 @@ unreachable end f64.const -0.6787637026394024 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -0.6787637026394024 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30935,19 +30526,9 @@ unreachable end f64.const 0 - call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/check - if (result i32) - f64.const 0 - call $~lib/bindings/Math/log10 - f64.const -inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30958,19 +30539,9 @@ unreachable end f64.const -0 - call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/check - if (result i32) - f64.const -0 - call $~lib/bindings/Math/log10 - f64.const -inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30981,19 +30552,9 @@ unreachable end f64.const -7.888609052210118e-31 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31004,19 +30565,9 @@ unreachable end f64.const 1 - call $~lib/math/NativeMath.log10 f64.const 0 f64.const 0 - call $std/math/check - if (result i32) - f64.const 1 - call $~lib/bindings/Math/log10 - f64.const 0 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31027,19 +30578,9 @@ unreachable end f64.const -1 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -1 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31050,19 +30591,9 @@ unreachable end f64.const inf - call $~lib/math/NativeMath.log10 f64.const inf f64.const 0 - call $std/math/check - if (result i32) - f64.const inf - call $~lib/bindings/Math/log10 - f64.const inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31073,19 +30604,9 @@ unreachable end f64.const -inf - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -inf - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31096,19 +30617,9 @@ unreachable end f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const nan:0x8000000000000 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31119,10 +30630,9 @@ unreachable end f32.const -8.066848754882812 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31133,10 +30643,9 @@ unreachable end f32.const 4.345239639282227 - call $~lib/math/NativeMathf.log10 f32.const 0.6380137205123901 f32.const -0.20476758480072021 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31147,10 +30656,9 @@ unreachable end f32.const -8.381433486938477 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31161,10 +30669,9 @@ unreachable end f32.const -6.531673431396484 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31175,10 +30682,9 @@ unreachable end f32.const 9.267057418823242 - call $~lib/math/NativeMathf.log10 f32.const 0.9669418334960938 f32.const -0.34273025393486023 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31189,10 +30695,9 @@ unreachable end f32.const 0.6619858741760254 - call $~lib/math/NativeMathf.log10 f32.const -0.1791512817144394 f32.const -0.27078554034233093 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31203,10 +30708,9 @@ unreachable end f32.const -0.40660393238067627 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31217,10 +30721,9 @@ unreachable end f32.const 0.5617597699165344 - call $~lib/math/NativeMathf.log10 f32.const -0.25044935941696167 f32.const 0.2126826047897339 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31231,10 +30734,9 @@ unreachable end f32.const 0.7741522789001465 - call $~lib/math/NativeMathf.log10 f32.const -0.1111735999584198 f32.const 0.46515095233917236 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31245,10 +30747,9 @@ unreachable end f32.const -0.6787636876106262 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31259,10 +30760,9 @@ unreachable end f32.const 0 - call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31273,10 +30773,9 @@ unreachable end f32.const -0 - call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31287,10 +30786,9 @@ unreachable end f32.const -7.888609052210118e-31 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31301,10 +30799,9 @@ unreachable end f32.const 1 - call $~lib/math/NativeMathf.log10 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31315,10 +30812,9 @@ unreachable end f32.const -1 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31329,10 +30825,9 @@ unreachable end f32.const inf - call $~lib/math/NativeMathf.log10 f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31343,10 +30838,9 @@ unreachable end f32.const -inf - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31357,10 +30851,9 @@ unreachable end f32.const nan:0x400000 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -44532,28 +44025,28 @@ call $~lib/math/NativeMath.seedRandom end global.get $~lib/math/random_state0_64 - local.set $2 + local.set $6 global.get $~lib/math/random_state1_64 - local.tee $3 + local.tee $2 global.set $~lib/math/random_state0_64 - local.get $3 local.get $2 + local.get $6 i64.const 23 i64.shl - local.get $2 + local.get $6 i64.xor - local.tee $2 + local.tee $6 + local.get $6 i64.const 17 i64.shr_u - local.get $2 i64.xor i64.xor - local.get $3 + local.get $2 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $3 + local.get $2 i64.const 12 i64.shr_u i64.const 4607182418800017408 @@ -44564,11 +44057,10 @@ local.tee $0 f64.const 1 f64.lt - i32.const 0 local.get $0 f64.const 0 f64.ge - select + i32.and i32.eqz if i32.const 0 @@ -44604,24 +44096,24 @@ call $~lib/math/NativeMath.seedRandom end global.get $~lib/math/random_state0_32 - local.tee $5 + local.tee $4 global.get $~lib/math/random_state1_32 i32.xor - local.tee $4 - local.get $5 + local.tee $3 + local.get $4 i32.const 26 i32.rotl i32.xor - local.get $4 + local.get $3 i32.const 9 i32.shl i32.xor global.set $~lib/math/random_state0_32 - local.get $4 + local.get $3 i32.const 13 i32.rotl global.set $~lib/math/random_state1_32 - local.get $5 + local.get $4 i32.const -1640531525 i32.mul i32.const 5 @@ -44635,14 +44127,13 @@ f32.reinterpret_i32 f32.const 1 f32.sub - local.tee $6 + local.tee $5 f32.const 1 f32.lt - i32.const 0 - local.get $6 + local.get $5 f32.const 0 f32.ge - select + i32.and i32.eqz if i32.const 0 diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index 3a905d40e0..1c0226fb8c 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -20,6 +20,7 @@ (local $7 i64) (local $8 i64) (local $9 i64) + (local $10 i64) block $__inlined_func$std/mod/check (result i32) block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 @@ -29,200 +30,194 @@ local.get $0 f64.copysign local.get $1 - local.tee $4 f64.abs f64.const 1 f64.eq br_if $__inlined_func$~lib/math/NativeMath.mod drop - local.get $4 + local.get $1 i64.reinterpret_f64 - local.tee $5 + local.tee $8 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $7 - i32.const 1 - local.get $4 - local.get $4 - f64.ne - i32.const 1 + local.set $9 + local.get $8 + i64.const 1 + i64.shl + local.tee $6 + i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $5 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $6 + local.tee $10 i64.const 2047 i64.eq - local.get $5 - i64.const 1 - i64.shl - local.tee $8 - i64.eqz - select - select + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 - local.get $4 - f64.mul - local.tee $1 local.get $1 + f64.mul + local.tee $4 + local.get $4 f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $8 - local.get $3 + local.get $6 + local.get $5 i64.const 1 i64.shl - local.tee $9 + local.tee $3 i64.ge_u if local.get $0 - local.get $8 - local.get $9 + local.get $3 + local.get $6 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 + local.get $5 i64.const 63 i64.shr_u - local.set $8 - local.get $6 + local.get $10 i64.eqz if (result i64) - local.get $3 + local.get $5 i64.const 1 - local.get $6 - local.get $3 + local.get $10 + local.get $5 i64.const 12 i64.shl i64.clz i64.sub - local.tee $6 + local.tee $10 i64.sub i64.shl else - local.get $3 + local.get $5 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $3 - local.get $7 + local.get $9 i64.eqz if (result i64) - local.get $5 + local.get $8 i64.const 1 - local.get $7 - local.get $5 + local.get $9 + local.get $8 i64.const 12 i64.shl i64.clz i64.sub - local.tee $7 + local.tee $9 i64.sub i64.shl else - local.get $5 + local.get $8 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $5 - block $folding-inner0 - loop $while-continue|0 - local.get $6 - local.get $7 - i64.gt_s - if + loop $while-continue|0 + local.get $9 + local.get $10 + i64.lt_s + if + local.get $3 + local.get $5 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $5 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 local.get $5 - i64.ge_u - if (result i64) - local.get $3 - local.get $5 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $5 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $6 - i64.const 1 i64.sub - local.set $6 - br $while-continue|0 + 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 - local.get $6 + end + local.get $10 + local.get $3 + local.get $5 + i64.ge_u + if + local.get $0 + f64.const 0 + f64.mul local.get $3 local.get $5 - i64.ge_u - if - local.get $3 - local.get $5 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $5 - i64.sub - local.set $3 - end + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $6 + local.get $5 i64.sub - local.set $5 - local.get $3 - local.get $6 - i64.shl local.set $3 - local.get $5 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $5 - i64.const 52 - i64.shl - i64.or - else - local.get $3 - i64.const 1 - local.get $5 - i64.sub - i64.shr_u - end - local.get $8 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - br $__inlined_func$~lib/math/NativeMath.mod end - local.get $0 - f64.const 0 - f64.mul + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $6 + i64.sub + local.set $5 + i64.const 63 + i64.shl + local.get $3 + local.get $6 + i64.shl + local.tee $3 + i64.const 4503599627370496 + i64.sub + local.get $5 + i64.const 52 + i64.shl + i64.or + local.get $3 + i64.const 1 + local.get $5 + i64.sub + i64.shr_u + local.get $5 + i64.const 0 + i64.gt_s + select + i64.or + f64.reinterpret_i64 end - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 f64.ne local.get $2 local.get $2 @@ -233,7 +228,7 @@ local.get $2 f64.div f64.const 1 - local.get $1 + local.get $4 f64.div f64.eq local.get $2 @@ -241,14 +236,14 @@ f64.eq br_if $__inlined_func$std/mod/check drop - local.get $1 local.get $2 + local.get $4 f64.eq end if (result i32) block $__inlined_func$std/mod/check0 (result i32) local.get $0 - local.get $4 + local.get $1 call $std/mod/mod local.tee $0 local.get $0 @@ -285,6 +280,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) block $__inlined_func$std/mod/check (result i32) block $__inlined_func$~lib/math/NativeMathf.mod (result f32) local.get $0 @@ -301,31 +297,31 @@ drop local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $7 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $6 + local.set $8 i32.const 1 local.get $1 local.get $1 f32.ne local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $5 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $5 + local.tee $9 i32.const 255 i32.eq i32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl - local.tee $7 + local.tee $4 select select if @@ -337,148 +333,147 @@ f32.div br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $7 - local.get $3 + local.get $4 + local.get $5 i32.const 1 i32.shl - local.tee $8 + local.tee $3 i32.ge_u if local.get $0 - local.get $7 - local.get $8 + local.get $3 + local.get $4 i32.ne f32.convert_i32_u f32.mul br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $3 + local.get $5 i32.const -2147483648 i32.and - local.set $7 - local.get $5 + local.set $6 + local.get $9 if (result i32) - local.get $3 + local.get $5 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $3 + local.get $5 i32.const 1 + local.get $9 local.get $5 - local.get $3 i32.const 9 i32.shl i32.clz i32.sub - local.tee $5 + local.tee $9 i32.sub i32.shl end local.set $3 - local.get $6 + local.get $8 if (result i32) - local.get $4 + local.get $7 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $4 + local.get $7 i32.const 1 - local.get $6 - local.get $4 + local.get $8 + local.get $7 i32.const 9 i32.shl i32.clz i32.sub - local.tee $6 + local.tee $8 i32.sub i32.shl end local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i32.gt_s - if + loop $while-continue|0 + local.get $8 + local.get $9 + i32.lt_s + if + local.get $3 + local.get $4 + i32.ge_u + if (result i32) + local.get $0 + f32.const 0 + f32.mul + local.get $3 + local.get $4 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop local.get $3 local.get $4 - i32.ge_u - if (result i32) - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - else - local.get $3 - end - i32.const 1 - i32.shl - local.set $3 - local.get $5 - i32.const 1 i32.sub - local.set $5 - br $while-continue|0 + else + local.get $3 end + i32.const 1 + i32.shl + local.set $3 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|0 end - local.get $5 + end + local.get $9 + local.get $3 + local.get $4 + i32.ge_u + if + local.get $0 + f32.const 0 + f32.mul local.get $3 local.get $4 - i32.ge_u - if - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - local.set $3 - end + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop local.get $3 - i32.const 8 - i32.shl - i32.clz - local.tee $5 + local.get $4 i32.sub - local.set $4 - local.get $3 - local.get $5 - i32.shl local.set $3 - local.get $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $3 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $7 - i32.or - f32.reinterpret_i32 - br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $0 - f32.const 0 - f32.mul + local.get $3 + i32.const 8 + i32.shl + i32.clz + local.tee $5 + i32.sub + local.set $4 + local.get $3 + local.get $5 + i32.shl + local.tee $3 + i32.const 8388608 + i32.sub + local.get $4 + i32.const 23 + i32.shl + i32.or + local.get $3 + i32.const 1 + local.get $4 + i32.sub + i32.shr_u + local.get $4 + i32.const 0 + i32.gt_s + select + local.get $6 + i32.or + f32.reinterpret_i32 end local.tee $0 local.get $0 diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 715b79212f..797cbb8408 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -41,12 +41,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -85,160 +85,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17860 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -275,11 +121,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -291,28 +136,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -324,19 +166,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -361,9 +203,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -371,17 +213,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -509,7 +351,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -520,7 +362,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -540,44 +382,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -587,7 +428,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -597,20 +438,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -638,7 +479,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -665,15 +506,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -685,15 +523,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -714,6 +552,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -723,7 +564,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -760,8 +601,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -920,7 +761,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1045,7 +890,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1055,7 +900,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1068,14 +913,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1105,9 +949,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1123,13 +967,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1139,9 +983,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1209,7 +1053,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1263,17 +1107,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1286,16 +1130,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1303,15 +1147,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1338,22 +1182,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1362,19 +1206,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1386,8 +1230,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1400,12 +1244,12 @@ i32.const 8 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1419,7 +1263,7 @@ local.get $0 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 @@ -1434,64 +1278,64 @@ local.get $0 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $4 local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.store - local.get $1 + local.get $0 f32.const 2 f32.store offset=4 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load i32.const 1 i32.add i32.store - local.get $1 + local.get $0 f32.const 3 f32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 global.set $std/new/aClass ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1515,7 +1359,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1526,4 +1370,153 @@ (func $~start call $start:std/new ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17860 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 4f82e9c7b1..3eefe0db84 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -43,7 +43,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -57,32 +57,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -99,29 +98,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 4e367f31bb..efaa0b6304 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -144,160 +144,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17956 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1520 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -334,11 +180,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -350,28 +195,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -383,19 +225,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -420,9 +262,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -430,17 +272,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -568,7 +410,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -579,7 +421,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -599,44 +441,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -646,7 +487,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -656,20 +497,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -697,7 +538,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -724,15 +565,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -744,15 +582,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -773,6 +611,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -782,7 +623,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -819,8 +660,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -979,7 +820,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1104,7 +949,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1114,7 +959,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1127,14 +972,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1164,9 +1008,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1182,13 +1026,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1198,9 +1042,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1270,17 +1114,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1293,16 +1137,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1310,15 +1154,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1345,12 +1189,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1360,7 +1204,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1369,19 +1213,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1411,8 +1255,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1441,42 +1285,42 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 ) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1669,360 +1513,360 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/a2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/a local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/s1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/s2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/s local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/m1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/m2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/m local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/d1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/d2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/d local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/f1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/f2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/f local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/p1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/p2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/p local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/n1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/n2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/n local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/o1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/o2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/o local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/x1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/x2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/x local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gt1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gt2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gte1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gte2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/le1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/le2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/leq1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/leq2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/shr local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/sres local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/shu local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ures local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/shl local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/pos local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/pres local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/neg local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/nres local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/not local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/res local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/excl local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/incdec local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/tmp local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ais1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ais2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ais local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/aii1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/aii2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/aii local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -2047,7 +1891,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2129,21 +1973,21 @@ global.set $std/operator-overloading/a2 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/a1 - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/a2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a @@ -3403,21 +3247,21 @@ global.set $std/operator-overloading/ais2 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais1 - local.tee $1 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais2 - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais @@ -3466,21 +3310,21 @@ global.set $std/operator-overloading/aii2 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii1 - local.tee $1 + local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii2 - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii @@ -3624,4 +3468,153 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17956 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1520 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index 7be887b047..87ab92dc44 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -20,13 +20,13 @@ (local $4 i32) (local $5 i32) i32.const 8 - local.set $4 + local.set $5 loop $while-continue|0 local.get $1 i32.const 3 i32.and i32.const 0 - local.get $4 + local.get $5 select if local.get $0 @@ -43,10 +43,10 @@ local.get $3 i32.load8_u i32.store8 - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 br $while-continue|0 end end @@ -56,7 +56,7 @@ i32.eqz if loop $while-continue|1 - local.get $4 + local.get $5 i32.const 16 i32.ge_u if @@ -84,14 +84,14 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|1 end end - local.get $4 + local.get $5 i32.const 8 i32.and if @@ -112,7 +112,7 @@ i32.add local.set $0 end - local.get $4 + local.get $5 i32.const 4 i32.and if @@ -129,7 +129,7 @@ i32.add local.set $0 end - local.get $4 + local.get $5 i32.const 2 i32.and if @@ -146,7 +146,7 @@ i32.add local.set $0 end - local.get $4 + local.get $5 i32.const 1 i32.and if @@ -157,7 +157,7 @@ end return end - local.get $4 + local.get $5 i32.const 32 i32.ge_u if @@ -174,7 +174,7 @@ end local.get $1 i32.load - local.set $5 + local.set $4 local.get $0 local.get $1 i32.load8_u @@ -201,12 +201,12 @@ local.get $3 i32.load8_u i32.store8 - local.get $4 + local.get $5 i32.const 3 i32.sub - local.set $4 + local.set $5 loop $while-continue|3 - local.get $4 + local.get $5 i32.const 17 i32.ge_u if @@ -216,7 +216,7 @@ local.tee $2 i32.const 8 i32.shl - local.get $5 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -246,7 +246,7 @@ local.get $0 local.get $1 i32.load offset=13 - local.tee $5 + local.tee $4 i32.const 8 i32.shl local.get $2 @@ -262,10 +262,10 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|3 end end @@ -273,31 +273,31 @@ end local.get $1 i32.load - local.set $5 + local.set $4 local.get $0 local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.tee $2 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 2 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $5 i32.const 2 i32.sub - local.set $4 + local.set $5 loop $while-continue|4 - local.get $4 + local.get $5 i32.const 18 i32.ge_u if @@ -307,7 +307,7 @@ local.tee $2 i32.const 16 i32.shl - local.get $5 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -337,7 +337,7 @@ local.get $0 local.get $1 i32.load offset=14 - local.tee $5 + local.tee $4 i32.const 16 i32.shl local.get $2 @@ -353,10 +353,10 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|4 end end @@ -364,7 +364,7 @@ end local.get $1 i32.load - local.set $5 + local.set $4 local.get $0 local.tee $2 i32.const 1 @@ -379,12 +379,12 @@ local.get $3 i32.load8_u i32.store8 - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 loop $while-continue|5 - local.get $4 + local.get $5 i32.const 19 i32.ge_u if @@ -394,7 +394,7 @@ local.tee $2 i32.const 24 i32.shl - local.get $5 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -424,7 +424,7 @@ local.get $0 local.get $1 i32.load offset=15 - local.tee $5 + local.tee $4 i32.const 24 i32.shl local.get $2 @@ -440,16 +440,16 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|5 end end end end - local.get $4 + local.get $5 i32.const 16 i32.and if @@ -458,147 +458,117 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $1 + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $1 + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add local.set $1 - local.get $3 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end - local.get $4 + local.get $5 i32.const 8 i32.and if @@ -607,75 +577,61 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $1 + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add local.set $1 - local.get $3 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end - local.get $4 + local.get $5 i32.const 4 i32.and if @@ -684,39 +640,33 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add local.set $1 - local.get $3 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end - local.get $4 + local.get $5 i32.const 2 i32.and if @@ -725,21 +675,21 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.tee $2 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 2 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 end - local.get $4 + local.get $5 i32.const 1 i32.and if @@ -835,10 +785,10 @@ i32.add global.set $std/pointer/one global.get $std/pointer/one - local.tee $1 + local.tee $0 global.set $std/pointer/nextOne global.get $std/pointer/nextOne - local.get $1 + local.get $0 i32.ne if i32.const 0 @@ -963,17 +913,17 @@ i32.sub local.set $4 local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 br $while-continue|0 @@ -1008,17 +958,17 @@ local.get $4 if local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 local.get $4 @@ -1253,12 +1203,12 @@ unreachable end global.get $std/pointer/buf - local.tee $3 + local.tee $0 i32.const 8 i32.add f32.const 1.2999999523162842 f32.store - local.get $3 + local.get $0 f32.load offset=8 f32.const 1.2999999523162842 f32.ne @@ -1295,10 +1245,10 @@ unreachable end global.get $std/pointer/buf - local.tee $2 + local.tee $0 f32.const 1.399999976158142 f32.store - local.get $2 + local.get $0 f32.load f32.const 1.399999976158142 f32.ne diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index a4618f1880..b439c19c0f 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -55,11 +55,11 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -126,7 +126,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -149,7 +149,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -159,15 +159,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -232,30 +232,6 @@ 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) @@ -292,11 +268,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -308,28 +283,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -341,19 +313,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -378,9 +350,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -388,17 +360,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -526,7 +498,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -537,7 +509,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -557,44 +529,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -604,7 +575,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -614,20 +585,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -655,7 +626,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -682,15 +653,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -702,15 +670,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -731,6 +699,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -740,7 +711,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -777,8 +748,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -937,7 +908,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1062,7 +1037,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1072,7 +1047,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1085,14 +1060,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1117,56 +1091,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1314,14 +1285,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1331,17 +1302,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1357,22 +1328,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1383,11 +1354,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1482,10 +1453,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1493,7 +1460,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1504,54 +1474,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1559,16 +1525,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1577,7 +1543,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1585,9 +1551,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1598,11 +1564,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1613,12 +1579,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1631,89 +1597,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1721,7 +1687,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1729,61 +1695,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1819,7 +1730,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -1827,7 +1738,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1835,13 +1746,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -1849,14 +1760,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load8_s local.tee $8 i32.store8 @@ -1872,29 +1783,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -1907,30 +1818,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -1945,77 +1862,77 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - 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 $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find - loop $while-continue|0 - local.get $2 - if - local.get $2 - i32.load offset=4 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/set/Set#find - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|0 - end - end - i32.const 0 + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + 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 $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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load local.set $2 + loop $while-continue|0 + local.get $2 + if + local.get $2 + local.get $2 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + drop + local.get $4 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 end - local.get $2 i32.eqz if local.get $0 @@ -2049,18 +1966,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -2076,7 +1993,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -2102,17 +2019,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2258,19 +2175,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2285,7 +2202,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2296,10 +2213,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2307,10 +2224,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2321,7 +2238,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2351,17 +2268,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2376,7 +2293,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2387,10 +2304,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2398,10 +2315,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2412,7 +2329,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2438,17 +2355,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2463,7 +2380,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2474,10 +2391,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2485,10 +2402,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2499,7 +2416,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2536,131 +2453,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2677,59 +2572,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2746,7 +2635,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2757,11 +2646,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2775,17 +2664,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2799,16 +2688,236 @@ i32.store8 end ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/itcms/__renew (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 $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $1 + local.get $0 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.gt_u + if + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $5 + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + local.get $4 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $2 i32.shr_u local.get $1 @@ -2827,9 +2936,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - local.set $4 local.get $1 i32.const 8 local.get $1 @@ -2839,272 +2945,56 @@ local.get $2 i32.shl local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.get $0 + i32.load + local.tee $2 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + i32.const 1073741820 local.get $3 - if (result i32) - local.get $8 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - else - local.get $1 - end - local.tee $6 - local.get $4 - local.tee $2 - i32.const 20 - i32.sub - local.tee $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $1 - local.get $6 - i32.store offset=16 - local.get $2 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $6 - local.get $1 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $9 - local.set $3 - local.get $6 + i32.const 1073741820 + i32.lt_u + select + local.tee $3 local.get $1 - i32.load offset=16 - local.tee $1 local.get $1 - local.get $6 - i32.gt_u + local.get $3 + i32.lt_u select - local.set $7 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $2 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $3 - i32.sub - local.get $7 - i32.sub - i32.const 0 - local.get $7 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $3 - i32.gt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $3 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $1 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 - if - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $3 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $7 - if - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $9 + local.set $1 end - local.tee $1 - local.get $8 + local.get $1 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $4 i32.add - local.get $6 - local.get $8 + local.get $1 + local.get $4 i32.sub call $~lib/memory/memory.fill - local.get $1 local.get $2 + local.get $3 i32.ne if local.get $0 - local.get $1 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $3 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 - local.get $6 + local.get $1 i32.store offset=8 end ) @@ -3167,50 +3057,51 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -3227,6 +3118,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -3235,9 +3127,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -3258,14 +3149,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -3285,7 +3176,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -3296,9 +3187,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -3307,9 +3201,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -3343,27 +3240,27 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|1 - local.get $0 + local.get $2 i32.extend8_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3373,62 +3270,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -3437,14 +3334,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3454,62 +3351,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -3519,14 +3416,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -3539,18 +3436,18 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.extend8_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3560,62 +3457,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -3625,14 +3522,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3642,62 +3539,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -3707,14 +3604,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -3727,10 +3624,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3739,17 +3634,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3758,31 +3653,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 1073741820 i32.gt_u if @@ -3794,61 +3686,64 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|0 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load8_s call $~lib/array/Array#__set local.get $0 @@ -3856,41 +3751,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|0 end end - local.get $3 + local.get $10 local.get $0 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3900,67 +3795,67 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $6 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -3970,21 +3865,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -3996,18 +3891,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|6 - local.get $4 + local.get $1 i32.extend8_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4018,61 +3913,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -4082,14 +3977,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4100,61 +3995,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -4163,14 +4058,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -4183,18 +4078,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|8 - local.get $4 + local.get $1 i32.extend8_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4205,61 +4100,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -4268,14 +4163,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4286,61 +4181,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -4350,14 +4245,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4368,61 +4263,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -4431,14 +4326,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -4450,9 +4345,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -4510,7 +4405,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -4518,7 +4413,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -4526,13 +4421,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -4540,19 +4435,21 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load8_u local.tee $8 i32.store8 local.get $2 local.get $8 + i32.const 255 + i32.and i32.const -1028477379 i32.mul i32.const 374761394 @@ -4562,29 +4459,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -4597,30 +4494,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -4635,54 +4538,55 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -4696,7 +4600,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -4704,9 +4609,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -4740,18 +4643,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -4767,7 +4670,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -4802,51 +4705,52 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -4863,6 +4767,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -4871,9 +4776,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -4894,14 +4798,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -4921,7 +4825,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -4948,94 +4852,95 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $10 i32.store loop $for-loop|1 - local.get $0 + local.get $1 i32.const 255 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -5044,80 +4949,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $10 + local.get $1 call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find1 + block $__inlined_func$~lib/set/Set#find1 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -5127,14 +5033,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -5147,85 +5053,86 @@ unreachable end i32.const 50 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 i32.const 255 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find4 + block $__inlined_func$~lib/set/Set#find4 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -5235,80 +5142,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 $10 local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find7 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find7 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -5318,14 +5226,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -5339,8 +5247,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 0 - local.set $0 local.get $1 i32.const 4 i32.sub @@ -5350,17 +5256,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $8 i32.const 0 i32.store - local.get $2 + local.get $10 i32.load offset=8 - local.set $10 - local.get $2 + local.set $6 + local.get $10 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $1 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -5376,24 +5282,21 @@ i32.const 16 i32.const 6 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $9 i32.store - local.get $3 + local.get $9 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $9 i32.const 0 i32.store offset=4 - local.get $3 + local.get $9 i32.const 0 i32.store offset=8 - local.get $3 + local.get $9 i32.const 0 i32.store offset=12 - local.get $5 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -5405,51 +5308,54 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 8 - local.get $5 + local.get $1 i32.const 8 i32.gt_u select - local.tee $8 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $11 i32.store offset=4 - local.get $6 - local.get $8 - call $~lib/memory/memory.fill + local.get $11 local.get $3 - local.get $6 + call $~lib/memory/memory.fill + local.get $9 + local.get $11 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 + local.get $11 + if + local.get $9 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 + local.get $11 i32.store offset=4 + local.get $9 local.get $3 - local.get $8 i32.store offset=8 - local.get $3 - local.get $5 + local.get $9 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $8 + local.get $9 i32.store loop $for-loop|0 + local.get $4 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $10 + local.get $6 i32.add local.tee $1 i32.load offset=4 @@ -5457,122 +5363,124 @@ i32.and i32.eqz if - local.get $3 - local.get $0 + local.get $9 + local.get $2 local.get $1 i32.load8_u call $~lib/array/Array#__set - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 end - local.get $7 + local.get $4 i32.const 1 i32.add - local.set $7 + local.set $4 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $3 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $9 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 - call $~lib/array/Array#__get - local.tee $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - 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.set $0 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 16 - i32.shr_u + local.get $9 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find10 + call $~lib/array/Array#__get + local.set $2 + block $__inlined_func$~lib/set/Set#find10 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 - local.tee $7 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load8_u - local.get $6 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5582,21 +5490,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $9 + local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|4 end end - local.get $1 + local.get $3 i32.load offset=20 - local.get $2 + local.get $10 i32.load offset=20 i32.ne if @@ -5608,59 +5516,61 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|6 - local.get $4 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find13 + block $__inlined_func$~lib/set/Set#find13 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5668,25 +5578,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -5696,54 +5605,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 + local.get $10 + local.get $0 call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find16 + block $__inlined_func$~lib/set/Set#find16 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5751,25 +5662,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -5778,14 +5688,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|6 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -5798,59 +5708,61 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|8 - local.get $4 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find19 + block $__inlined_func$~lib/set/Set#find19 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5858,25 +5770,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|020 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -5885,54 +5796,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find22 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find22 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5940,25 +5853,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -5968,54 +5880,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 $10 local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find25 + call $~lib/set/Set#delete + block $__inlined_func$~lib/set/Set#find25 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -6023,25 +5937,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -6050,14 +5963,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|8 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -6069,9 +5982,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $10 call $~lib/set/Set#clear - local.get $2 + local.get $10 i32.load offset=20 if i32.const 0 @@ -6129,7 +6042,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -6137,7 +6050,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -6145,13 +6058,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -6159,14 +6072,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load16_s local.tee $8 i32.store16 @@ -6182,29 +6095,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -6217,30 +6130,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -6255,53 +6174,54 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - 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 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -6315,7 +6235,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -6323,9 +6244,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -6359,18 +6278,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -6386,7 +6305,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -6462,50 +6381,51 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -6522,6 +6442,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -6530,9 +6451,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -6553,14 +6473,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -6580,7 +6500,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -6607,27 +6527,27 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|1 - local.get $0 + local.get $2 i32.extend16_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6637,62 +6557,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -6701,14 +6621,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6718,62 +6638,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -6783,14 +6703,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -6803,18 +6723,18 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.extend16_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6824,62 +6744,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -6889,14 +6809,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6906,62 +6826,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -6971,14 +6891,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -6991,10 +6911,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -7003,17 +6921,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -7022,31 +6940,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 8 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 536870910 i32.gt_u if @@ -7058,63 +6973,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|0 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load16_s call $~lib/array/Array#__set local.get $0 @@ -7122,41 +7040,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|0 end end - local.get $3 + local.get $10 local.get $0 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -7166,67 +7084,67 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $6 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -7236,21 +7154,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -7262,18 +7180,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|6 - local.get $4 + local.get $1 i32.extend16_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7284,61 +7202,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -7348,14 +7266,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7366,61 +7284,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -7429,14 +7347,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -7449,18 +7367,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|8 - local.get $4 + local.get $1 i32.extend16_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7471,61 +7389,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -7534,14 +7452,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7552,61 +7470,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -7616,14 +7534,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7634,61 +7552,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -7697,14 +7615,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -7716,9 +7634,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -7776,7 +7694,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -7784,7 +7702,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -7792,13 +7710,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -7806,19 +7724,21 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load16_u local.tee $8 i32.store16 local.get $2 local.get $8 + i32.const 65535 + i32.and i32.const -1028477379 i32.mul i32.const 374761395 @@ -7828,29 +7748,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -7863,30 +7783,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -7901,54 +7827,55 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -7962,7 +7889,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -7970,9 +7898,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -8006,18 +7932,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -8033,7 +7959,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -8070,51 +7996,52 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -8131,6 +8058,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -8139,9 +8067,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -8162,14 +8089,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -8189,7 +8116,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -8216,94 +8143,95 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $10 i32.store loop $for-loop|1 - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -8312,80 +8240,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u + local.get $10 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find1 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find1 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -8395,14 +8324,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -8415,85 +8344,86 @@ unreachable end i32.const 50 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find4 + block $__inlined_func$~lib/set/Set#find4 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -8503,80 +8433,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 $10 local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find7 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find7 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -8586,14 +8517,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -8607,8 +8538,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 0 - local.set $0 local.get $1 i32.const 4 i32.sub @@ -8618,17 +8547,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $8 i32.const 0 i32.store - local.get $2 + local.get $10 i32.load offset=8 - local.set $10 - local.get $2 + local.set $6 + local.get $10 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $1 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -8644,24 +8573,21 @@ i32.const 16 i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $9 i32.store - local.get $3 + local.get $9 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $9 i32.const 0 i32.store offset=4 - local.get $3 + local.get $9 i32.const 0 i32.store offset=8 - local.get $3 + local.get $9 i32.const 0 i32.store offset=12 - local.get $5 + local.get $1 i32.const 536870910 i32.gt_u if @@ -8673,53 +8599,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 8 - local.get $5 + local.get $1 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $8 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $11 i32.store offset=4 - local.get $6 - local.get $8 - call $~lib/memory/memory.fill + local.get $11 local.get $3 - local.get $6 + call $~lib/memory/memory.fill + local.get $9 + local.get $11 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 + local.get $11 + if + local.get $9 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 + local.get $11 i32.store offset=4 + local.get $9 local.get $3 - local.get $8 i32.store offset=8 - local.get $3 - local.get $5 + local.get $9 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $8 + local.get $9 i32.store loop $for-loop|0 + local.get $4 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $10 + local.get $6 i32.add local.tee $1 i32.load offset=4 @@ -8727,122 +8656,124 @@ i32.and i32.eqz if - local.get $3 - local.get $0 + local.get $9 + local.get $2 local.get $1 i32.load16_u call $~lib/array/Array#__set - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 end - local.get $7 + local.get $4 i32.const 1 i32.add - local.set $7 + local.set $4 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $3 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $9 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 - call $~lib/array/Array#__get - local.tee $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - 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.set $0 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 16 - i32.shr_u + local.get $9 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find10 + call $~lib/array/Array#__get + local.set $2 + block $__inlined_func$~lib/set/Set#find10 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 - local.tee $7 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load16_u - local.get $6 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8852,21 +8783,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $9 + local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|4 end end - local.get $1 + local.get $3 i32.load offset=20 - local.get $2 + local.get $10 i32.load offset=20 i32.ne if @@ -8878,59 +8809,61 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|6 - local.get $4 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find13 + block $__inlined_func$~lib/set/Set#find13 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -8938,25 +8871,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -8966,54 +8898,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find16 + call $~lib/set/Set#delete + block $__inlined_func$~lib/set/Set#find16 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9021,25 +8955,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -9048,14 +8981,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|6 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -9068,141 +9001,144 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|8 - local.get $4 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find19 + block $__inlined_func$~lib/set/Set#find19 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 - i32.const -2 - i32.and - local.set $0 - br $while-continue|020 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $4 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find19 + drop + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|020 + end + end + i32.const 0 + end + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find22 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find22 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9210,25 +9146,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -9238,54 +9173,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find25 + call $~lib/set/Set#delete + block $__inlined_func$~lib/set/Set#find25 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9293,25 +9230,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -9320,14 +9256,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|8 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -9339,9 +9275,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $10 call $~lib/set/Set#clear - local.get $2 + local.get $10 i32.load offset=20 if i32.const 0 @@ -9399,7 +9335,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -9407,7 +9343,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -9415,13 +9351,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -9429,14 +9365,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load local.tee $8 i32.store @@ -9451,29 +9387,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -9486,30 +9422,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -9524,52 +9466,53 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -9581,7 +9524,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -9589,9 +9533,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -9625,18 +9567,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -9652,7 +9594,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -9728,49 +9670,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -9785,6 +9728,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -9793,9 +9737,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -9816,14 +9759,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -9843,7 +9786,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -9870,26 +9813,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9898,60 +9841,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -9960,14 +9903,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9976,60 +9919,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -10039,14 +9982,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -10059,17 +10002,17 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10078,60 +10021,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -10141,14 +10084,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10157,60 +10100,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -10220,14 +10163,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -10240,10 +10183,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -10252,17 +10193,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -10271,31 +10212,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 268435455 i32.gt_u if @@ -10307,63 +10245,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|01 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load call $~lib/array/Array#__set local.get $0 @@ -10371,41 +10312,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|01 end end - local.get $3 + local.get $10 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10414,65 +10355,65 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $0 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -10482,21 +10423,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|2 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -10508,17 +10449,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|3 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10528,59 +10469,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -10590,14 +10531,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10607,59 +10548,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -10668,14 +10609,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -10688,17 +10629,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|4 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10708,59 +10649,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -10769,14 +10710,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10786,59 +10727,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -10848,14 +10789,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10865,59 +10806,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -10926,14 +10867,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -10945,9 +10886,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -11005,7 +10946,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -11013,7 +10954,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -11021,13 +10962,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -11035,14 +10976,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load local.tee $8 i32.store @@ -11057,29 +10998,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -11092,30 +11033,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -11130,52 +11077,53 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -11187,7 +11135,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -11195,9 +11144,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -11231,18 +11178,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -11258,7 +11205,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -11295,49 +11242,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -11352,6 +11300,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -11360,9 +11309,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -11383,14 +11331,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -11410,7 +11358,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -11437,26 +11385,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $0 + local.get $2 i32.const 100 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11465,60 +11413,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -11527,14 +11475,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11543,60 +11491,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -11606,14 +11554,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -11626,17 +11574,17 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 100 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11645,60 +11593,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -11708,14 +11656,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11724,60 +11672,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -11787,14 +11735,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -11807,10 +11755,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -11819,17 +11765,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -11838,31 +11784,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 14 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 268435455 i32.gt_u if @@ -11874,63 +11817,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|01 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load call $~lib/array/Array#__set local.get $0 @@ -11938,41 +11884,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|01 end end - local.get $3 + local.get $10 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11981,65 +11927,65 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $0 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -12049,21 +11995,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|2 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -12075,17 +12021,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|3 - local.get $4 + local.get $1 i32.const 50 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12095,59 +12041,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -12157,14 +12103,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12174,59 +12120,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -12235,14 +12181,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -12255,17 +12201,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|4 - local.get $4 + local.get $1 i32.const 50 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12275,59 +12221,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -12336,14 +12282,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12353,59 +12299,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -12415,14 +12361,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12432,59 +12378,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -12493,14 +12439,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -12512,9 +12458,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -12527,72 +12473,73 @@ global.get $~lib/memory/__stack_pointer i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 18240 - i32.const 18288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -12607,6 +12554,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $2 i32.const -2 i32.and @@ -12615,9 +12563,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -12657,7 +12603,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -12665,7 +12611,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -12673,13 +12619,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 @@ -12687,19 +12633,18 @@ local.get $8 i32.ne if - local.get $8 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i64.load local.tee $6 i64.store local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -12722,28 +12667,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -12756,30 +12702,36 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 16 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $5 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -12794,64 +12746,65 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -12863,7 +12816,8 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -12871,9 +12825,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -12907,18 +12859,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 4 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -12934,7 +12886,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -13010,60 +12962,61 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -13078,6 +13031,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -13086,9 +13040,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -13109,14 +13062,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -13136,7 +13089,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -13147,9 +13100,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -13158,9 +13114,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -13173,9 +13132,9 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -13195,23 +13154,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $4 + local.tee $11 i32.store loop $for-loop|0 - local.get $3 + local.get $1 i64.const 100 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13221,11 +13180,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13236,14 +13195,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|0 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -13256,14 +13215,14 @@ unreachable end i64.const 50 - local.set $3 + local.set $1 loop $for-loop|1 - local.get $3 + local.get $1 i64.const 100 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13274,11 +13233,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13289,14 +13248,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|1 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -13309,8 +13268,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -13319,18 +13278,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $9 i32.const 0 i32.store - local.get $4 + local.get $11 i32.load offset=8 - local.set $11 - local.get $4 + local.set $7 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $2 + local.tee $8 + local.set $2 + local.get $9 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -13339,31 +13297,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $1 + local.get $5 i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $10 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $10 i32.const 0 i32.store offset=4 - local.get $1 + local.get $10 i32.const 0 i32.store offset=8 - local.get $1 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 134217727 i32.gt_u if @@ -13375,53 +13330,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 8 - local.get $5 + local.get $2 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $12 + local.get $5 call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $10 + local.get $12 i32.store - local.get $1 - local.get $6 - call $~lib/rt/itcms/__link - local.get $1 - local.get $6 + local.get $12 + if + local.get $10 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $12 i32.store offset=4 - local.get $1 - local.get $9 - i32.store offset=8 - local.get $1 + local.get $10 local.get $5 + i32.store offset=8 + local.get $10 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $1 + local.get $9 + local.get $10 i32.store loop $for-loop|01 + local.get $4 local.get $8 - local.get $12 i32.lt_s if - local.get $8 + local.get $4 i32.const 4 i32.shl - local.get $11 + local.get $7 i32.add local.tee $2 i32.load offset=8 @@ -13429,7 +13387,7 @@ i32.and i32.eqz if - local.get $1 + local.get $10 local.get $0 local.get $2 i64.load @@ -13439,40 +13397,40 @@ i32.add local.set $0 end - local.get $8 + local.get $4 i32.const 1 i32.add - local.set $8 + local.set $4 br $for-loop|01 end end - local.get $1 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $2 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $1 + local.get $10 i32.load offset=12 - local.get $7 + local.get $3 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $11 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -13484,21 +13442,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - local.get $7 + local.get $0 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 + local.set $3 br $for-loop|2 end end - local.get $2 + local.get $0 i32.load offset=20 - local.get $4 + local.get $11 i32.load offset=20 i32.ne if @@ -13510,14 +13468,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|3 - local.get $3 + local.get $1 i64.const 50 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13528,11 +13486,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13542,14 +13500,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|3 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -13562,14 +13520,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|4 - local.get $3 + local.get $1 i64.const 50 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13579,11 +13537,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13594,11 +13552,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13608,14 +13566,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -13627,9 +13585,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 call $~lib/set/Set#clear - local.get $4 + local.get $11 i32.load offset=20 if i32.const 0 @@ -13654,60 +13612,61 @@ ) (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -13722,6 +13681,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $2 i32.const -2 i32.and @@ -13730,9 +13690,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -13772,7 +13730,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -13780,7 +13738,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -13788,13 +13746,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 @@ -13802,19 +13760,18 @@ local.get $8 i32.ne if - local.get $8 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i64.load local.tee $6 i64.store local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -13837,28 +13794,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -13871,30 +13829,36 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 16 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $5 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -13909,64 +13873,65 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -13978,7 +13943,8 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -13986,9 +13952,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -14022,18 +13986,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 4 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -14049,7 +14013,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -14086,60 +14050,61 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -14154,6 +14119,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -14162,9 +14128,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -14185,14 +14150,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -14212,15 +14177,15 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) (func $std/set/testNumeric (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -14240,23 +14205,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $4 + local.tee $11 i32.store loop $for-loop|0 - local.get $3 + local.get $1 i64.const 100 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14266,11 +14231,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14281,14 +14246,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|0 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -14301,14 +14266,14 @@ unreachable end i64.const 50 - local.set $3 + local.set $1 loop $for-loop|1 - local.get $3 + local.get $1 i64.const 100 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14319,11 +14284,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14334,14 +14299,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|1 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -14354,8 +14319,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14364,18 +14329,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $9 i32.const 0 i32.store - local.get $4 + local.get $11 i32.load offset=8 - local.set $11 - local.get $4 + local.set $7 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $2 + local.tee $8 + local.set $2 + local.get $9 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -14384,31 +14348,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $1 + local.get $5 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $10 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $10 i32.const 0 i32.store offset=4 - local.get $1 + local.get $10 i32.const 0 i32.store offset=8 - local.get $1 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 134217727 i32.gt_u if @@ -14420,53 +14381,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 8 - local.get $5 + local.get $2 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $12 + local.get $5 call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $10 + local.get $12 i32.store - local.get $1 - local.get $6 - call $~lib/rt/itcms/__link - local.get $1 - local.get $6 + local.get $12 + if + local.get $10 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $12 i32.store offset=4 - local.get $1 - local.get $9 - i32.store offset=8 - local.get $1 + local.get $10 local.get $5 + i32.store offset=8 + local.get $10 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $1 + local.get $9 + local.get $10 i32.store loop $for-loop|01 + local.get $4 local.get $8 - local.get $12 i32.lt_s if - local.get $8 + local.get $4 i32.const 4 i32.shl - local.get $11 + local.get $7 i32.add local.tee $2 i32.load offset=8 @@ -14474,7 +14438,7 @@ i32.and i32.eqz if - local.get $1 + local.get $10 local.get $0 local.get $2 i64.load @@ -14484,40 +14448,40 @@ i32.add local.set $0 end - local.get $8 + local.get $4 i32.const 1 i32.add - local.set $8 + local.set $4 br $for-loop|01 end end - local.get $1 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $2 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $1 + local.get $10 i32.load offset=12 - local.get $7 + local.get $3 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $11 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -14529,21 +14493,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - local.get $7 + local.get $0 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 + local.set $3 br $for-loop|2 end end - local.get $2 + local.get $0 i32.load offset=20 - local.get $4 + local.get $11 i32.load offset=20 i32.ne if @@ -14555,14 +14519,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|3 - local.get $3 + local.get $1 i64.const 50 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14573,11 +14537,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14587,14 +14551,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|3 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -14607,14 +14571,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|4 - local.get $3 + local.get $1 i64.const 50 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14624,11 +14588,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14639,11 +14603,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14653,14 +14617,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -14672,9 +14636,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 call $~lib/set/Set#clear - local.get $4 + local.get $11 i32.load offset=20 if i32.const 0 @@ -14700,11 +14664,11 @@ (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -14733,7 +14697,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -14749,33 +14713,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $5 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $8 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 f32.load - local.tee $4 + local.tee $8 f32.store local.get $2 - local.get $4 + local.get $8 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -14786,29 +14750,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -14821,28 +14785,34 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 8 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $5 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $6 i32.store offset=12 @@ -14859,53 +14829,54 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -14917,7 +14888,8 @@ f32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -14925,9 +14897,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -14961,18 +14931,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -14988,7 +14958,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -15025,49 +14995,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -15082,6 +15053,7 @@ f32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -15090,9 +15062,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -15113,14 +15084,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -15140,7 +15111,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -15176,16 +15147,16 @@ i32.store offset=8 local.get $0 call $~lib/set/Set#constructor - local.tee $3 + local.tee $12 i32.store loop $for-loop|0 local.get $2 f32.const 100 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15198,59 +15169,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -15259,12 +15230,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15277,59 +15248,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15346,7 +15317,7 @@ br $for-loop|0 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -15365,9 +15336,9 @@ f32.const 100 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15380,59 +15351,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15442,12 +15413,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15460,59 +15431,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15529,7 +15500,7 @@ br $for-loop|1 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -15552,17 +15523,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $7 i32.const 0 i32.store - local.get $3 + local.get $12 i32.load offset=8 - local.set $11 - local.get $3 + local.set $8 + local.get $12 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $0 + local.tee $6 + local.set $3 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -15571,10 +15542,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $0 i64.const 0 i64.store - local.get $4 + local.get $0 i32.const 16 i32.const 20 call $~lib/rt/itcms/__new @@ -15585,9 +15556,6 @@ i32.store local.get $4 i32.const 0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 0 i32.store offset=4 local.get $4 i32.const 0 @@ -15595,7 +15563,7 @@ local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $3 i32.const 268435455 i32.gt_u if @@ -15607,55 +15575,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.const 8 - local.get $5 + local.get $3 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $9 + local.tee $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $6 - local.get $9 + local.get $5 + local.get $0 call $~lib/memory/memory.fill local.get $4 - local.get $6 + local.get $5 i32.store + local.get $5 + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - local.get $6 - call $~lib/rt/itcms/__link - local.get $4 - local.get $6 + local.get $5 i32.store offset=4 local.get $4 - local.get $9 + local.get $0 i32.store offset=8 local.get $4 - local.get $5 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $7 local.get $4 i32.store loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + local.get $6 + local.get $10 + i32.gt_s if - local.get $8 + local.get $10 i32.const 3 i32.shl - local.get $11 + local.get $8 i32.add - local.tee $5 + local.tee $3 i32.load offset=4 i32.const 1 i32.and @@ -15666,7 +15637,7 @@ i32.const 1 i32.add local.set $1 - local.get $5 + local.get $3 f32.load local.set $2 local.get $4 @@ -15689,12 +15660,12 @@ local.get $0 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity local.get $4 - local.get $5 + local.get $3 i32.store offset=12 end local.get $4 @@ -15706,10 +15677,10 @@ local.get $2 f32.store end - local.get $8 + local.get $10 i32.const 1 i32.add - local.set $8 + local.set $10 br $for-loop|01 end end @@ -15734,11 +15705,11 @@ loop $for-loop|2 local.get $4 i32.load offset=12 - local.get $7 + local.get $11 i32.gt_s if local.get $4 - local.get $7 + local.get $11 call $~lib/array/Array#__get local.tee $2 i32.reinterpret_f32 @@ -15751,64 +15722,64 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.set $0 - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $6 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $6 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15820,19 +15791,19 @@ end local.get $1 local.get $4 - local.get $7 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $11 i32.const 1 i32.add - local.set $7 + local.set $11 br $for-loop|2 end end local.get $1 i32.load offset=20 - local.get $3 + local.get $12 i32.load offset=20 i32.ne if @@ -15850,9 +15821,9 @@ f32.const 50 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15865,59 +15836,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15927,12 +15898,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#delete - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15945,59 +15916,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -16013,7 +15984,7 @@ br $for-loop|3 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -16032,9 +16003,9 @@ f32.const 50 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16047,59 +16018,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -16108,12 +16079,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16126,59 +16097,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -16188,12 +16159,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#delete - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16206,59 +16177,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -16274,7 +16245,7 @@ br $for-loop|4 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -16286,9 +16257,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 call $~lib/set/Set#clear - local.get $3 + local.get $12 i32.load offset=20 if i32.const 0 @@ -16314,62 +16285,63 @@ (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + 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 local.get $0 i32.load offset=8 local.tee $3 @@ -16384,6 +16356,7 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -16392,21 +16365,19 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 f64) + (local $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $8 f64) + (local $9 i64) (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16435,7 +16406,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -16443,7 +16414,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -16451,36 +16422,35 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $9 + local.get $4 + local.get $7 i32.ne if - local.get $9 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 + local.get $4 f64.load - local.tee $5 + local.tee $8 f64.store local.get $2 - local.get $1 - local.get $5 + local.get $8 i64.reinterpret_f64 - local.tee $4 + local.tee $9 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16490,7 +16460,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $9 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16502,28 +16472,29 @@ i32.const 668265263 i32.mul local.tee $10 - local.get $10 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul local.tee $10 - local.get $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul local.tee $10 - local.get $10 i32.const 16 i32.shr_u + local.get $10 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $8 + local.get $5 i32.add local.tee $10 i32.load @@ -16536,30 +16507,36 @@ i32.add local.set $2 end - local.get $9 + local.get $4 i32.const 16 i32.add - local.set $9 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $8 + local.get $5 i32.store - local.get $0 - local.get $8 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -16572,69 +16549,70 @@ ) (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) - local.get $0 - i32.load - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -16646,7 +16624,8 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $5 i32.const -2 i32.and local.set $2 @@ -16654,9 +16633,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -16690,18 +16667,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $5 i32.const 4 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -16717,7 +16694,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -16753,67 +16730,68 @@ ) (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + (local $3 i64) + (local $4 i32) + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -16825,7 +16803,8 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -16833,9 +16812,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -16856,14 +16834,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.lt_u select @@ -16883,7 +16861,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -16911,22 +16889,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 call $~lib/set/Set#constructor - local.tee $4 + local.tee $12 i32.store loop $for-loop|0 local.get $3 f64.const 100 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -16937,10 +16915,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#add - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -16959,7 +16937,7 @@ br $for-loop|0 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -16978,7 +16956,7 @@ f64.const 100 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -16990,10 +16968,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#add - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -17012,7 +16990,7 @@ br $for-loop|1 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -17025,8 +17003,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17035,18 +17013,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $4 + local.get $12 i32.load offset=8 - local.set $11 - local.get $4 + local.set $8 + local.get $12 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $0 + local.tee $7 + local.set $2 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -17055,31 +17032,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 16 i32.const 22 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $5 i32.const 0 i32.store offset=4 - local.get $1 + local.get $5 i32.const 0 i32.store offset=8 - local.get $1 + local.get $5 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 134217727 i32.gt_u if @@ -17091,69 +17065,72 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 8 - local.get $5 + local.get $2 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $6 - local.get $9 + local.get $4 + local.get $0 call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $5 + local.get $4 i32.store - local.get $1 - local.get $6 - call $~lib/rt/itcms/__link - local.get $1 - local.get $6 + local.get $4 + if + local.get $5 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 + local.get $4 i32.store offset=4 - local.get $1 - local.get $9 + local.get $5 + local.get $0 i32.store offset=8 - local.get $1 local.get $5 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 + local.get $6 + local.get $5 i32.store loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + local.get $7 + local.get $10 + i32.gt_s if - local.get $8 + local.get $10 i32.const 4 i32.shl - local.get $11 + local.get $8 i32.add - local.tee $5 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $1 local.tee $0 i32.const 1 i32.add - local.set $2 - local.get $5 + local.set $1 + local.get $2 f64.load local.set $3 - local.get $1 + local.get $5 i32.load offset=12 local.get $0 i32.le_u @@ -17169,19 +17146,19 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 local.get $0 i32.const 1 i32.add - local.tee $5 + local.tee $2 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $1 local.get $5 + local.get $2 i32.store offset=12 end - local.get $1 + local.get $5 i32.load offset=4 local.get $0 i32.const 3 @@ -17190,40 +17167,40 @@ local.get $3 f64.store end - local.get $8 + local.get $10 i32.const 1 i32.add - local.set $8 + local.set $10 br $for-loop|01 end end + local.get $5 local.get $1 - local.get $2 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity + local.get $5 local.get $1 - local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $1 + local.get $5 i32.load offset=12 - local.get $7 + local.get $11 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $12 + local.get $5 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -17236,20 +17213,20 @@ unreachable end local.get $0 - local.get $1 - local.get $7 + local.get $5 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $11 i32.const 1 i32.add - local.set $7 + local.set $11 br $for-loop|2 end end local.get $0 i32.load offset=20 - local.get $4 + local.get $12 i32.load offset=20 i32.ne if @@ -17267,7 +17244,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -17279,10 +17256,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#delete - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -17300,7 +17277,7 @@ br $for-loop|3 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -17319,7 +17296,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -17330,10 +17307,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#add - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -17345,10 +17322,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#delete - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -17366,7 +17343,7 @@ br $for-loop|4 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -17378,9 +17355,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 call $~lib/set/Set#clear - local.get $4 + local.get $12 i32.load offset=20 if i32.const 0 @@ -17404,6 +17381,7 @@ unreachable ) (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) block $folding-inner1 block $folding-inner0 block $invalid @@ -17425,7 +17403,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -17433,15 +17411,27 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=8 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start memory.size @@ -17599,9 +17589,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17610,9 +17603,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17661,9 +17657,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17672,9 +17671,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17723,9 +17725,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17734,9 +17739,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17785,9 +17793,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17796,9 +17807,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17847,9 +17861,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17858,9 +17875,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17909,9 +17929,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17920,9 +17943,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17971,9 +17997,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17982,9 +18011,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18033,9 +18065,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -18044,9 +18079,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18095,9 +18133,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -18106,9 +18147,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18157,9 +18201,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -18168,9 +18215,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18186,4 +18236,72 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 + ) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 6b6ce45d59..c973a59401 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -85,19 +85,19 @@ (local $0 i32) (local $1 i32) i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1584 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1632 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -164,7 +164,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -187,7 +187,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -197,15 +197,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -270,30 +270,6 @@ 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) @@ -330,11 +306,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -346,28 +321,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -379,19 +351,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -416,9 +388,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -426,17 +398,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -564,7 +536,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -575,7 +547,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -595,44 +567,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -642,7 +613,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -652,20 +623,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -693,7 +664,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -720,15 +691,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -740,15 +708,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -769,6 +737,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -778,7 +749,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -815,8 +786,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -975,7 +946,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1100,7 +1075,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1110,7 +1085,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1123,14 +1098,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1155,56 +1129,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1352,14 +1323,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1369,17 +1340,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1395,22 +1366,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1421,11 +1392,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1471,17 +1442,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1627,19 +1598,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1654,7 +1625,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1665,10 +1636,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1676,10 +1647,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1690,7 +1661,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1720,17 +1691,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -1745,7 +1716,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -1756,10 +1727,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1767,10 +1738,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -1781,7 +1752,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1807,17 +1778,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1832,7 +1803,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -1843,10 +1814,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1854,10 +1825,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -1868,7 +1839,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1905,131 +1876,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2046,59 +1995,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2115,7 +2058,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2126,11 +2069,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2144,17 +2087,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2196,9 +2139,9 @@ end local.get $6 i32.load offset=12 - local.set $7 + local.set $3 local.get $1 - local.tee $3 + local.tee $2 i32.const 1073741804 i32.ge_u if @@ -2254,18 +2197,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $3 - i32.const 16 - i32.add - local.set $1 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $1 + local.tee $7 + local.get $2 + i32.const 16 + i32.add + local.tee $4 i32.const 1073741820 i32.gt_u if @@ -2276,54 +2218,50 @@ call $~lib/builtins/abort unreachable end - local.get $1 + i32.const 12 + local.get $4 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $4 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 $1 - call $~lib/rt/tlsf/searchBlock + select local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $1 - i32.add - else - local.get $1 - end + local.tee $1 i32.const 4 - local.get $5 + local.get $7 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $4 + i32.add + local.get $4 + local.get $4 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -2331,16 +2269,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $2 - local.get $4 + local.tee $5 + local.get $1 + local.get $5 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -2348,18 +2286,18 @@ unreachable end end - local.get $5 - local.get $2 + local.get $7 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 - local.get $1 + local.get $7 + local.get $4 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -2370,11 +2308,11 @@ unreachable end end - local.get $4 + local.get $1 i32.load i32.const -4 i32.and - local.get $1 + local.get $4 i32.lt_u if i32.const 0 @@ -2384,16 +2322,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $7 + local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 - local.set $2 - local.get $4 - local.tee $1 i32.load - local.set $4 - local.get $2 + local.set $8 + local.get $4 i32.const 4 i32.add i32.const 15 @@ -2406,40 +2341,40 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $8 i32.const -4 i32.and - local.get $2 + local.get $4 i32.sub - local.tee $8 + local.tee $5 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $8 i32.const 2 i32.and - local.get $2 + local.get $4 i32.or i32.store - local.get $2 + local.get $4 local.get $1 i32.const 4 i32.add i32.add local.tee $4 - local.get $8 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $7 local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $8 i32.const -2 i32.and i32.store @@ -2459,18 +2394,18 @@ i32.store end local.get $1 - local.get $7 + local.get $3 i32.store offset=12 local.get $1 - local.get $3 + local.get $2 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $3 i32.load offset=8 local.set $4 local.get $1 + local.get $3 global.get $~lib/rt/itcms/white - local.get $2 i32.or i32.store offset=4 local.get $1 @@ -2484,7 +2419,7 @@ local.get $1 i32.or i32.store offset=4 - local.get $2 + local.get $3 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -2500,21 +2435,21 @@ i32.const 20 i32.add local.tee $4 - local.get $3 + local.get $2 call $~lib/memory/memory.fill - local.get $3 + local.get $2 local.get $6 i32.load offset=16 local.tee $1 local.get $1 - local.get $3 + local.get $2 i32.gt_u select local.set $5 block $~lib/util/memory/memmove|inlined.0 + local.get $0 local.get $4 local.tee $1 - local.get $0 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $0 @@ -2560,17 +2495,17 @@ i32.sub local.set $5 local.get $1 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 br $while-continue|0 @@ -2605,17 +2540,17 @@ local.get $5 if local.get $1 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -2708,14 +2643,12 @@ local.tee $3 local.get $1 i32.shr_u - i32.const 1 - i32.lt_u + i32.eqz if i32.const 1073741820 local.get $1 i32.shr_u - i32.const 1 - i32.lt_u + i32.eqz if i32.const 1584 i32.const 1536 @@ -2746,26 +2679,25 @@ local.get $4 i32.lt_u select - local.tee $4 - call $~lib/rt/itcms/__renew local.tee $1 + call $~lib/rt/itcms/__renew + local.tee $4 i32.add - local.get $4 + local.get $1 local.get $3 i32.sub call $~lib/memory/memory.fill - local.get $1 local.get $2 + local.get $4 i32.ne if local.get $0 - local.get $1 + local.get $4 i32.store local.get $0 - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 - local.tee $2 + local.get $4 if local.get $0 i32.eqz @@ -2778,7 +2710,7 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $2 + local.get $4 i32.const 20 i32.sub local.tee $2 @@ -2804,11 +2736,10 @@ global.get $~lib/rt/itcms/state i32.const 1 i32.eq - i32.const 0 local.get $3 i32.const 3 i32.eq - select + i32.and if local.get $2 call $~lib/rt/itcms/Object#makeGray @@ -2818,7 +2749,7 @@ end end local.get $0 - local.get $4 + local.get $1 i32.store offset=8 end ) @@ -2906,7 +2837,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2914,7 +2845,11 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start call $start:std/static-array @@ -3289,4 +3224,23 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 + ) ) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index c065279b3b..d28683e09a 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -7,10 +7,10 @@ (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -210,29 +210,29 @@ (local $0 i32) (local $1 i32) i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $std/staticarray/arr3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/staticarray/arr4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1680 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2176 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -299,7 +299,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -322,7 +322,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -332,15 +332,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -405,30 +405,6 @@ 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) @@ -465,11 +441,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -481,28 +456,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -514,19 +486,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -551,9 +523,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -561,17 +533,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -699,7 +671,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -710,7 +682,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -730,44 +702,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -777,7 +748,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -787,20 +758,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -828,7 +799,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -855,15 +826,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -875,15 +843,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -904,6 +872,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -913,7 +884,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -950,8 +921,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1066,18 +1037,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1160,7 +1131,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1295,56 +1270,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1422,19 +1394,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1445,54 +1410,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1500,16 +1461,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1517,16 +1478,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1543,7 +1504,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1553,13 +1514,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1572,40 +1533,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1625,8 +1586,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -1698,14 +1657,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1715,17 +1674,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1741,22 +1700,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1767,11 +1726,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1852,23 +1811,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 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/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -1880,8 +1843,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1928,17 +1891,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2084,19 +2047,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2111,7 +2074,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2122,10 +2085,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2133,10 +2096,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2147,7 +2110,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2177,17 +2140,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2202,7 +2165,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2213,10 +2176,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2224,10 +2187,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2238,7 +2201,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2264,17 +2227,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2289,7 +2252,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2300,10 +2263,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2311,10 +2274,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2325,7 +2288,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2362,131 +2325,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2503,59 +2444,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2572,7 +2507,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2583,11 +2518,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2601,17 +2536,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2816,66 +2751,6 @@ end end ) - (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 1408 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=12 @@ -2923,7 +2798,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2937,32 +2812,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2979,29 +2853,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3016,25 +2890,25 @@ (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3868 - i32.lt_s - if - i32.const 20272 - i32.const 20320 - 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/staticarray/StaticArray<~lib/string/String>#indexOf + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf (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 3868 + i32.lt_s + if + i32.const 20272 + i32.const 20320 + 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 $2 local.get $0 i32.const 20 @@ -3053,7 +2927,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf end local.get $2 @@ -3093,6 +2966,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf end local.get $2 @@ -3107,9 +2981,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 end - local.get $2 i32.const 0 i32.ge_s ) @@ -3120,38 +2992,37 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.tee $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3868 - i32.lt_s - if - i32.const 20272 - i32.const 20320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray + block $__inlined_func$~lib/util/string/joinStringArray (result i32) local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + if + i32.const 20272 + i32.const 20320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 + local.get $5 i32.const 1 i32.sub local.tee $6 @@ -3163,7 +3034,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 2768 - local.set $0 br $__inlined_func$~lib/util/string/joinStringArray end local.get $6 @@ -3171,31 +3041,30 @@ if global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $4 + local.get $0 i32.load local.tee $0 i32.store - local.get $0 - i32.const 2768 - local.get $0 - select - local.set $0 local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2768 + local.get $0 + select br $__inlined_func$~lib/util/string/joinStringArray end loop $for-loop|0 - local.get $0 + local.get $4 local.get $5 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load local.tee $7 @@ -3208,18 +3077,19 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 end - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer + local.get $2 local.get $6 local.get $1 i32.const 20 @@ -3227,76 +3097,75 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $7 + local.tee $2 i32.mul - local.get $3 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store offset=8 i32.const 0 - local.set $5 + local.set $4 loop $for-loop|1 - local.get $5 + local.get $4 local.get $6 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load - local.tee $3 + local.tee $7 i32.store offset=4 - local.get $3 + local.get $7 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $7 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $7 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 local.get $3 + local.get $7 i32.add - local.set $2 + local.set $3 end - local.get $7 + local.get $2 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add local.get $1 - local.get $7 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $2 - local.get $7 + local.get $3 i32.add - local.set $2 + local.set $3 end - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|1 end end @@ -3304,20 +3173,20 @@ local.get $6 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -3331,8 +3200,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 end - local.get $0 ) (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -3390,13 +3259,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -3618,22 +3487,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -3752,18 +3621,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -3775,7 +3644,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -3787,7 +3656,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -3812,8 +3681,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -3827,11 +3696,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -3839,87 +3707,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -3934,16 +3801,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -3952,7 +3827,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -3963,50 +3838,58 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -4014,23 +3897,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -4040,11 +3923,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -4054,33 +3937,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -4088,27 +3969,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -4116,15 +3997,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -4135,7 +4016,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -4147,13 +4028,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -4164,9 +4045,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -4183,18 +4064,18 @@ i32.load offset=16 local.get $0 i32.add - local.set $1 + local.set $2 loop $while-continue|0 local.get $0 - local.get $1 + local.get $2 i32.lt_u if local.get $0 i32.load - local.tee $2 + local.tee $1 if - local.get $2 - call $~lib/rt/itcms/__visit + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.const 4 @@ -4208,36 +4089,23 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/array/Array<~lib/string/String> - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/staticarray/StaticArray - block $std/staticarray/Ref - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/__visit + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid end return end @@ -4245,67 +4113,68 @@ end return end - local.get $0 - call $~lib/staticarray/StaticArray~visit return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit + call $~lib/staticarray/StaticArray~visit return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit + call $~lib/staticarray/StaticArray~visit return end local.get $0 - call $~lib/staticarray/StaticArray~visit - return - end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.load - local.tee $0 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 end + br $folding-inner1 end - local.get $1 - i32.load - call $~lib/rt/itcms/__visit return end return end - return + unreachable end - unreachable + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start call $start:std/staticarray @@ -4318,16 +4187,17 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f64) - (local $8 f32) + (local $7 i32) + (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) + (local $11 f64) + (local $12 f32) (local $13 i32) (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -4338,19 +4208,19 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i64.const 0 i64.store offset=16 - local.get $1 + local.get $2 i64.const 0 i64.store offset=24 - local.get $1 + local.get $2 i32.const 1056 i32.store i32.const 1056 @@ -4507,17 +4377,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $2 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4532,9 +4402,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4549,9 +4419,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4566,9 +4436,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4586,16 +4456,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4611,17 +4481,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $2 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4638,33 +4508,39 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 call $std/staticarray/Ref#constructor - local.tee $3 + local.tee $2 i32.store - local.get $1 + local.get $2 + if + local.get $3 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 call $std/staticarray/Ref#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $1 + local.get $2 + if + local.get $3 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 global.set $std/staticarray/arr4 i32.const 0 global.set $std/staticarray/arr3 i32.const 0 global.set $std/staticarray/arr4 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4673,25 +4549,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 12 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4708,17 +4584,17 @@ unreachable end loop $for-loop|0 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $0 + local.get $1 i32.gt_s if + local.get $2 local.get $1 - local.get $0 call $~lib/staticarray/StaticArray#__get if i32.const 0 @@ -4728,10 +4604,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -4740,16 +4616,16 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 call $~lib/staticarray/StaticArray.fromArray - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 + local.get $2 i32.load offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4765,16 +4641,16 @@ unreachable end loop $for-loop|1 - local.get $1 - i32.load offset=12 local.get $2 + i32.load offset=12 + local.get $0 i32.gt_s if + local.get $1 local.get $0 - local.get $2 call $~lib/staticarray/StaticArray#__get - local.get $1 local.get $2 + local.get $0 call $~lib/array/Array#__get i32.ne if @@ -4785,10 +4661,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -4797,15 +4673,15 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 call $~lib/staticarray/StaticArray.fromArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4823,11 +4699,11 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -4840,7 +4716,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray.concat local.tee $0 @@ -4872,7 +4748,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray.concat local.tee $0 @@ -4883,7 +4759,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4902,26 +4778,26 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.const 2128 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -4937,33 +4813,33 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|2 - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $0 + local.get $1 i32.gt_s if + local.get $4 local.get $1 - local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store local.get $2 - local.get $0 + i32.store + local.get $3 + local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=12 - local.get $3 - local.get $4 + local.get $2 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -4974,21 +4850,21 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5004,18 +4880,18 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 + local.tee $0 + local.get $1 i32.store - local.get $3 + local.get $0 i32.const 1984 i32.store offset=12 - local.get $2 + local.get $1 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -5027,18 +4903,18 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $2 + local.get $0 i32.const 2016 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5051,13 +4927,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> local.tee $0 i32.store offset=4 - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -5081,7 +4957,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5093,7 +4969,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -5109,7 +4985,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 100 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5130,7 +5006,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const -1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5155,15 +5031,15 @@ local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $2 + local.get $0 i32.const 2080 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2080 call $~lib/string/String.__eq i32.eqz @@ -5176,7 +5052,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5197,13 +5073,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5219,7 +5095,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $1 @@ -5246,11 +5122,11 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 @@ -5261,14 +5137,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 local.get $0 i32.load offset=12 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5292,14 +5168,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 local.get $0 i32.load offset=12 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5320,16 +5196,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $1 + local.get $0 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5346,7 +5222,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5361,7 +5237,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5376,7 +5252,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5393,54 +5269,52 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2496 i32.const 8 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.get $1 + local.set $0 + i32.const 0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 3 i32.shr_u - local.tee $2 - i32.const 0 - local.get $2 - select + local.tee $1 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 - local.get $2 - local.get $16 - i32.gt_s + local.get $0 + local.get $1 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $16 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.tee $7 - local.get $7 - f64.ne - local.get $7 + local.tee $11 f64.const nan:0x8000000000000 f64.eq - select + local.get $11 + local.get $11 + f64.ne + i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 + local.set $0 br $while-continue|0 end end @@ -5458,57 +5332,53 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2528 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.set $16 + local.set $0 i32.const 0 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 - i32.const 0 - local.get $2 - select + local.tee $1 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - loop $while-continue|07 - local.get $2 - local.get $16 - i32.gt_s + loop $while-continue|025 + local.get $0 + local.get $1 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.tee $8 - local.get $8 - f32.ne - local.get $8 + local.tee $12 f32.const nan:0x400000 f32.eq - select + local.get $12 + local.get $12 + f32.ne + i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $while-continue|07 + local.set $0 + br $while-continue|025 end end i32.const 0 @@ -5526,40 +5396,36 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $0 + local.get $3 i32.store offset=16 i32.const 0 + local.set $0 + i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.tee $2 - i32.const 0 - local.get $2 - select i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf - end - loop $while-continue|013 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf + loop $while-continue|027 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 @@ -5568,8 +5434,8 @@ local.get $1 i32.const 1 i32.add - local.set $1 - br $while-continue|013 + local.set $0 + br $while-continue|027 end end i32.const -1 @@ -5585,43 +5451,39 @@ unreachable end i32.const 0 + local.set $0 + i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf28 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.tee $2 - i32.const 0 - local.get $2 - select i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - end - loop $while-continue|015 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf28 + loop $while-continue|030 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf28 local.get $1 i32.const 1 i32.add - local.set $1 - br $while-continue|015 + local.set $0 + br $while-continue|030 end end i32.const -1 @@ -5639,9 +5501,11 @@ unreachable end i32.const 2 + local.set $0 + i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf31 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -5653,30 +5517,27 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - end - loop $while-continue|017 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf31 + loop $while-continue|033 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 9 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf31 local.get $1 i32.const 1 i32.add - local.set $1 - br $while-continue|017 + local.set $0 + br $while-continue|033 end end i32.const -1 @@ -5693,59 +5554,53 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf34 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 - i32.const -1 - i32.le_s - i32.const 1 - local.get $2 - select - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - end - local.get $2 + local.tee $1 + i32.eqz + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 + local.get $1 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - loop $while-continue|019 + local.set $0 + loop $while-continue|036 + local.get $0 local.get $1 - local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|019 + local.set $0 + br $while-continue|036 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -5757,56 +5612,56 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $0 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.const -3 i32.le_s i32.const 1 - local.get $2 + local.get $1 select - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + local.get $1 i32.const 3 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - loop $while-continue|021 + local.set $0 + loop $while-continue|039 + local.get $0 local.get $1 - local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|021 + local.set $0 + br $while-continue|039 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -5819,70 +5674,74 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2592 i32.const 16 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $16 - local.set $0 + local.set $3 i32.const -1 - local.set $2 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $16 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf local.get $0 - local.get $16 + local.get $3 i32.add - local.get $16 + local.get $0 i32.const 1 i32.sub + local.get $3 local.get $0 - local.get $0 - local.get $16 - i32.ge_s + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - loop $while-continue|00 - local.get $0 + local.set $1 + loop $while-continue|012 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $2 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|00 + local.set $1 + br $while-continue|012 end end i32.const -1 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 i32.const 3 i32.ne if @@ -5895,68 +5754,61 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 - local.tee $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 + local.tee $3 + local.set $0 i32.const -1 - local.set $2 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $16 + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 + local.get $3 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $1 - local.get $16 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 + local.get $0 + local.get $3 i32.add - local.get $16 + local.get $3 i32.const 1 i32.sub - local.get $1 - local.get $1 - local.get $16 + local.get $0 + local.get $0 + local.get $3 i32.ge_s select - local.get $1 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - loop $while-continue|06 + loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if local.get $1 - local.tee $2 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 + local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|06 + br $while-continue|018 end end i32.const -1 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 i32.const -1 i32.ne if @@ -5967,48 +5819,47 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $0 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - end - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 + local.get $0 i32.const 1 i32.sub i32.const 3 - local.get $1 + local.get $0 i32.const 3 i32.le_u select - local.set $1 - loop $while-continue|023 - local.get $1 + local.set $0 + loop $while-continue|041 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|023 + local.set $0 + br $while-continue|041 end end i32.const -1 @@ -6025,8 +5876,10 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -6034,11 +5887,7 @@ i32.shr_u local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - end + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 local.get $1 i32.const 1 i32.sub @@ -6047,32 +5896,32 @@ i32.const 2 i32.le_u select - local.set $1 - loop $while-continue|025 - local.get $1 + local.set $0 + loop $while-continue|044 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|025 + local.set $0 + br $while-continue|044 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -6081,8 +5930,10 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -6090,40 +5941,36 @@ i32.shr_u local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - end + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 local.get $1 i32.const 2 i32.sub - local.set $1 - loop $while-continue|027 - local.get $1 + local.set $0 + loop $while-continue|047 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|027 + local.set $0 + br $while-continue|047 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -6133,46 +5980,46 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $0 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 + local.get $1 i32.const 1 i32.sub - local.set $1 - loop $while-continue|029 - local.get $1 + local.set $0 + loop $while-continue|050 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|029 + local.set $0 + br $while-continue|050 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -6187,16 +6034,16 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2736 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2800 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6221,7 +6068,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2768 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2768 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6246,7 +6093,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2928 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2928 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6271,7 +6118,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3008 i32.store offset=20 - local.get $1 + local.get $2 i32.const 3008 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6296,12 +6143,12 @@ global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2800 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 i32.const 4 @@ -6312,25 +6159,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 2800 i32.store - local.get $1 + local.get $2 i32.const 2800 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=12 local.get $0 + i32.store offset=12 local.get $1 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -6345,45 +6192,45 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 3104 i32.const 8 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=16 i32.const 1 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_u select - local.set $16 - loop $for-loop|024 + local.set $0 + loop $for-loop|053 local.get $0 - local.get $16 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.const 1 i32.store - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|024 + local.set $0 + br $for-loop|053 end end - local.get $1 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6394,7 +6241,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6411,68 +6258,68 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.const 3136 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $5 i32.store offset=16 i32.const 0 - local.set $16 - local.get $1 + local.set $0 + local.get $5 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u - local.set $2 - local.get $0 + local.set $4 + local.get $1 i32.const 1 i32.sub - local.set $0 - loop $while-continue|026 - local.get $2 - local.get $16 - i32.gt_u + local.set $3 + loop $while-continue|055 + local.get $0 + local.get $4 + i32.lt_u if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $5 i32.add - local.tee $3 + local.tee $1 i32.load - local.set $4 + local.set $2 + local.get $1 local.get $3 local.get $0 - local.get $16 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $5 i32.add - local.tee $3 + local.tee $1 i32.load i32.store - local.get $3 - local.get $4 - i32.store - local.get $16 + local.get $1 + local.get $2 + i32.store + local.get $0 i32.const 1 i32.add - local.set $16 - br $while-continue|026 + local.set $0 + br $while-continue|055 end end end - local.get $1 + local.get $5 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6485,7 +6332,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6498,7 +6345,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6515,56 +6362,44 @@ i32.const 20 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.const 3168 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $3 i32.store offset=16 - i32.const 0 - local.get $1 + local.get $3 + i32.const 3 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 - select - local.set $2 - local.get $0 - i32.const 3 - local.get $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 3 i32.gt_u select - local.tee $3 - i32.sub - local.set $16 - local.get $2 + local.tee $0 i32.const 2 i32.shl - local.get $1 - i32.add local.get $3 - i32.const 2 - i32.shl - local.get $1 i32.add - local.get $16 - local.get $0 local.get $2 + local.get $0 i32.sub + local.tee $1 + local.get $2 local.tee $0 local.get $0 - local.get $16 + local.get $1 i32.gt_s select i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $1 + local.get $3 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6577,7 +6412,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6590,7 +6425,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6603,7 +6438,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6616,7 +6451,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6633,19 +6468,19 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $7 i32.const 3216 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $7 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i32.const 3248 i32.store offset=12 i32.const 0 - local.set $16 - local.get $2 + local.set $0 + local.get $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6654,65 +6489,65 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 local.get $1 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 + local.tee $5 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $4 i32.store - local.get $0 + local.get $4 i32.load offset=4 - local.set $4 - loop $for-loop|027 - local.get $3 - local.get $16 - i32.gt_s + local.set $3 + loop $for-loop|028 + local.get $0 + local.get $5 + i32.lt_s if - local.get $1 - local.get $16 + local.get $7 + local.get $0 i32.const 2 i32.shl - local.tee $5 + local.tee $2 i32.add i32.load - local.set $6 + local.set $1 i32.const 3 global.set $~argumentsLength - local.get $4 - local.get $5 + local.get $2 + local.get $3 i32.add - local.get $6 - local.get $16 local.get $1 + local.get $0 + local.get $7 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|027 + local.set $0 + br $for-loop|028 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 + local.get $6 + local.get $4 i32.store offset=4 - local.get $0 + local.get $4 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6725,7 +6560,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6738,7 +6573,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 2 call $~lib/array/Array#__get i32.const 4 @@ -6755,37 +6590,37 @@ i32.const 3280 i32.store offset=12 i32.const 0 - local.set $16 - local.get $1 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|030 + local.set $2 + loop $for-loop|060 local.get $0 - local.get $16 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $16 - local.get $1 + local.get $0 + local.get $7 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|030 + local.set $0 + br $for-loop|060 end end global.get $std/staticarray/maxVal @@ -6800,13 +6635,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $0 + local.tee $17 i32.const 3312 i32.store offset=12 - i32.const 0 - local.set $16 - local.get $0 + local.get $17 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6823,51 +6655,51 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $6 i32.store - local.get $1 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $12 - loop $for-loop|028 - local.get $12 - local.get $16 - i32.gt_s + local.set $13 + loop $for-loop|029 + local.get $9 + local.get $13 + i32.lt_s if - local.get $16 + local.get $9 i32.const 2 i32.shl - local.get $1 + local.get $7 i32.add i32.load - local.set $9 + local.set $5 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $9 - local.get $16 - local.get $1 + local.get $7 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $3 + local.get $6 i32.load offset=12 - local.tee $13 + local.tee $14 i32.const 1 i32.add - local.tee $14 - local.tee $0 - local.get $3 + local.tee $15 + local.tee $2 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $4 i32.const 2 i32.shr_u i32.gt_u if - local.get $0 + local.get $2 i32.const 268435455 i32.gt_u if @@ -6879,19 +6711,19 @@ unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $5 + local.get $4 i32.const 1 i32.shl - local.tee $4 + local.tee $0 i32.const 1073741820 - local.get $4 + local.get $0 i32.const 1073741820 i32.lt_u select - local.tee $4 - local.get $0 + local.tee $1 + local.get $2 i32.const 8 - local.get $0 + local.get $2 i32.const 8 i32.gt_u select @@ -6899,18 +6731,18 @@ i32.shl local.tee $0 local.get $0 - local.get $4 + local.get $1 i32.lt_u select - local.tee $10 - local.tee $4 - local.get $3 - i32.load - local.tee $15 + local.tee $3 local.tee $2 + local.get $6 + i32.load + local.tee $16 + local.tee $1 i32.const 20 i32.sub - local.tee $6 + local.tee $10 i32.load i32.const -4 i32.and @@ -6918,81 +6750,85 @@ i32.sub i32.le_u if - local.get $6 - local.get $4 - i32.store offset=16 + local.get $10 local.get $2 + i32.store offset=16 + local.get $1 local.set $0 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $4 - local.get $6 + local.get $2 + local.get $10 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $0 + local.get $1 local.get $2 - local.get $4 - local.get $6 + local.get $10 i32.load offset=16 - local.tee $2 + local.tee $1 + local.get $1 local.get $2 - local.get $4 i32.gt_u select call $~lib/memory/memory.copy end local.get $0 - local.get $5 + local.get $4 i32.add - local.get $10 - local.get $5 + local.get $3 + local.get $4 i32.sub call $~lib/memory/memory.fill local.get $0 - local.get $15 + local.get $16 i32.ne if - local.get $3 + local.get $6 local.get $0 i32.store - local.get $3 + local.get $6 local.get $0 i32.store offset=4 - local.get $3 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $6 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end + local.get $6 local.get $3 - local.get $10 i32.store offset=8 end - local.get $3 + local.get $6 i32.load offset=4 - local.get $13 + local.get $14 i32.const 2 i32.shl i32.add - local.get $9 + local.get $5 i32.store - local.get $3 - local.get $14 + local.get $6 + local.get $15 i32.store offset=12 end - local.get $16 + local.get $9 i32.const 1 i32.add - local.set $16 - br $for-loop|028 + local.set $9 + br $for-loop|029 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $17 + local.get $6 i32.store offset=24 - local.get $3 + local.get $6 i32.load offset=12 i32.const 2 i32.ne @@ -7004,7 +6840,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -7017,7 +6853,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -7034,47 +6870,44 @@ i32.const 3344 i32.store offset=12 i32.const 0 - local.set $16 - i32.const 0 - local.set $2 - local.get $1 - local.tee $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|033 - local.get $1 - local.get $16 - i32.gt_s + local.set $2 + loop $for-loop|064 + local.get $0 + local.get $2 + i32.lt_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $16 + local.get $8 + local.get $1 local.get $0 + local.get $7 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $16 + local.set $8 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|033 + local.set $0 + br $for-loop|064 end end - local.get $2 + local.get $8 i32.const 6 i32.ne if @@ -7089,8 +6922,8 @@ i32.const 3376 i32.store offset=12 i32.const 0 - local.set $2 - local.get $0 + local.set $8 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7098,37 +6931,37 @@ i32.shr_u i32.const 1 i32.sub - local.set $16 - loop $for-loop|035 - local.get $16 + local.set $0 + loop $for-loop|066 + local.get $0 i32.const 0 i32.ge_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load local.set $1 i32.const 4 global.set $~argumentsLength - local.get $2 + local.get $8 local.get $1 - local.get $16 local.get $0 + local.get $7 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $16 + local.set $8 + local.get $0 i32.const 1 i32.sub - local.set $16 - br $for-loop|035 + local.set $0 + br $for-loop|066 end end - local.get $2 + local.get $8 i32.const 6 i32.ne if @@ -7144,42 +6977,42 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#some (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|038 + local.set $2 + loop $for-loop|068 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#some drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|038 + local.set $0 + br $for-loop|068 end end i32.const 0 @@ -7196,44 +7029,44 @@ global.get $~lib/memory/__stack_pointer i32.const 3440 i32.store offset=12 - block $__inlined_func$~lib/staticarray/StaticArray#some39 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#some69 (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|040 + local.set $2 + loop $for-loop|071 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#some39 + br_if $__inlined_func$~lib/staticarray/StaticArray#some69 drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|040 + local.set $0 + br $for-loop|071 end end i32.const 0 @@ -7251,43 +7084,43 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#every (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|041 + local.set $2 + loop $for-loop|073 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3472 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#every drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|041 + local.set $0 + br $for-loop|073 end end i32.const 1 @@ -7304,45 +7137,45 @@ global.get $~lib/memory/__stack_pointer i32.const 3504 i32.store offset=12 - block $__inlined_func$~lib/staticarray/StaticArray#every42 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#every74 (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|043 + local.set $2 + loop $for-loop|076 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3504 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#every42 + br_if $__inlined_func$~lib/staticarray/StaticArray#every74 drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|043 + local.set $0 + br $for-loop|076 end end i32.const 1 @@ -7359,8 +7192,8 @@ i32.const 3536 i32.store offset=12 i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7368,36 +7201,36 @@ i32.shr_u local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#findIndex - loop $for-loop|044 - local.get $1 + loop $for-loop|078 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 local.get $0 + local.get $7 i32.const 3536 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|044 + local.set $0 + br $for-loop|078 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7412,45 +7245,45 @@ i32.const 3568 i32.store offset=12 i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - block $__inlined_func$~lib/staticarray/StaticArray#findIndex45 - loop $for-loop|046 - local.get $1 + block $__inlined_func$~lib/staticarray/StaticArray#findIndex79 + loop $for-loop|081 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 local.get $0 + local.get $7 i32.const 3568 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex45 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex79 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|046 + local.set $0 + br $for-loop|081 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -7464,7 +7297,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=12 - local.get $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7472,38 +7305,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - loop $for-loop|047 - local.get $1 + loop $for-loop|083 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 local.get $0 + local.get $7 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|047 + local.set $0 + br $for-loop|083 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7517,7 +7350,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=12 - local.get $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7526,8 +7359,8 @@ i32.const 1 i32.sub local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 - loop $for-loop|049 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex84 + loop $for-loop|086 local.get $1 i32.const 0 i32.ge_s @@ -7535,28 +7368,29 @@ local.get $1 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 + local.tee $0 + local.get $7 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex84 + local.get $0 i32.const 1 i32.sub local.set $1 - br $for-loop|049 + br $for-loop|086 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -7580,7 +7414,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $16 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7592,16 +7426,16 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of18 - block $0of19 - block $outOfRange10 + block $1of126 + block $0of127 + block $outOfRange28 global.get $~argumentsLength - br_table $0of19 $1of18 $outOfRange10 + br_table $0of127 $1of126 $outOfRange28 end unreachable end i32.const 3712 - local.set $16 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 3712 i32.store @@ -7613,7 +7447,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $16 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -7675,12 +7509,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|037 + loop $while-continue|089 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|037 + br $while-continue|089 end end end @@ -7799,10 +7633,13 @@ local.tee $1 local.get $3 i32.store - local.get $1 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 local.get $3 i32.store offset=4 @@ -7883,25 +7720,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - i32.const 0 - local.get $1 - select local.tee $3 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $4 - i32.add + i32.const 0 + local.get $1 + select local.tee $2 + i32.add + local.tee $4 i32.const 268435455 i32.gt_u if @@ -7913,25 +7750,25 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 2 i32.shl i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 - local.get $0 local.get $4 + local.get $0 + local.get $3 i32.const 2 i32.shl local.tee $0 call $~lib/memory/memory.copy local.get $0 - local.get $2 + local.get $4 i32.add local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -7939,7 +7776,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/staticarray/StaticArray.slice<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -7968,13 +7805,13 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -7984,9 +7821,9 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end @@ -7997,7 +7834,7 @@ i32.lt_s if (result i32) local.get $2 - local.get $3 + local.get $4 i32.add local.tee $2 i32.const 0 @@ -8007,9 +7844,9 @@ select else local.get $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select end @@ -8023,41 +7860,42 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store local.get $1 i32.const 2 i32.shl local.get $0 i32.add - local.set $1 - i32.const 0 local.set $0 loop $while-continue|0 - local.get $0 + local.get $2 local.get $3 - i32.lt_u + i32.gt_u if - local.get $0 - local.get $2 + local.get $3 + local.get $4 i32.add local.get $0 - local.get $1 + local.get $3 i32.add i32.load - local.tee $4 + local.tee $1 i32.store - local.get $2 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 + if + local.get $4 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.add - local.set $0 + local.set $3 br $while-continue|0 end end @@ -8065,7 +7903,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -8134,6 +7972,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -8158,7 +7997,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $5 local.get $1 i32.load offset=12 i32.const 0 @@ -8166,7 +8005,7 @@ select local.tee $6 i32.add - local.tee $3 + local.tee $4 i32.const 268435455 i32.gt_u if @@ -8178,79 +8017,83 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $7 i32.store - local.get $3 + local.get $7 i32.load offset=4 - local.set $5 - local.get $2 + local.set $4 + local.get $5 i32.const 2 i32.shl - local.set $2 + local.set $5 loop $for-loop|0 - local.get $2 - local.get $4 - i32.gt_u + local.get $3 + local.get $5 + i32.lt_u if + local.get $3 local.get $4 - local.get $5 i32.add local.get $0 - local.get $4 + local.get $3 i32.add i32.load - local.tee $7 + local.tee $8 i32.store + local.get $8 + if + local.get $7 + local.get $8 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 i32.const 4 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $4 local.get $5 i32.add - local.set $4 + local.set $0 local.get $1 i32.load offset=4 local.set $1 local.get $6 i32.const 2 i32.shl - local.set $5 - i32.const 0 - local.set $0 + local.set $3 loop $for-loop|1 - local.get $0 - local.get $5 + local.get $2 + local.get $3 i32.lt_u if local.get $0 - local.get $4 + local.get $2 i32.add - local.get $0 local.get $1 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $4 i32.store - local.get $3 + local.get $4 + if + local.get $7 + local.get $4 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 i32.const 4 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end @@ -8258,6 +8101,79 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $7 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + 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 ) ) diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 2dcb63d1cd..38a3381beb 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -3,8 +3,8 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) @@ -486,15 +486,15 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 19632 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 20688 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -533,160 +533,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 37476 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 21056 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 21060 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -723,11 +569,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -739,28 +584,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -772,19 +614,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -809,9 +651,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -819,17 +661,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -957,7 +799,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -968,7 +810,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -988,44 +830,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1035,7 +876,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1045,20 +886,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1086,7 +927,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1113,15 +954,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1133,15 +971,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1162,6 +1000,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1171,7 +1012,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1208,8 +1049,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1368,7 +1209,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1493,7 +1338,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1503,7 +1348,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1516,14 +1361,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1548,56 +1392,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1698,12 +1539,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1719,14 +1560,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1737,18 +1578,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1759,54 +1599,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1814,16 +1650,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1831,15 +1667,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1867,12 +1703,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1886,7 +1722,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1896,7 +1732,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1914,12 +1750,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1949,8 +1785,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1979,19 +1815,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -2000,18 +1836,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -2020,10 +1856,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -2032,97 +1868,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -2154,7 +1990,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2180,12 +2016,12 @@ local.get $0 i32.const 255 i32.and - local.tee $5 + local.tee $4 i32.const 3 i32.div_u i32.add i32.load8_u - local.get $5 + local.get $4 i32.const 3 i32.rem_u i32.const 2 @@ -2207,43 +2043,43 @@ local.tee $2 i32.const 255 i32.and - local.set $4 + local.set $3 local.get $2 i32.const 8 i32.shr_s - local.set $3 - local.get $4 + local.set $5 + local.get $3 i32.const 2 i32.lt_u if i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.xor i32.sub - local.get $3 + local.get $5 i32.and local.get $0 i32.add return end - local.get $3 + local.get $5 i32.const 255 i32.and local.set $2 - local.get $3 + local.get $5 i32.const 8 i32.shr_u - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 if - local.get $5 + local.get $4 local.get $2 i32.const 1 i32.shr_u - local.tee $3 - local.get $4 + local.tee $5 + local.get $3 i32.add i32.const 1 i32.shl @@ -2254,7 +2090,7 @@ i32.eq if (result i32) local.get $3 - local.get $4 + local.get $5 i32.add i32.const 1 i32.shl @@ -2298,18 +2134,18 @@ i32.sub return else - local.get $5 + local.get $4 local.get $6 i32.lt_u if (result i32) - local.get $3 + local.get $5 else local.get $3 - local.get $4 + local.get $5 i32.add - local.set $4 + local.set $3 local.get $2 - local.get $3 + local.get $5 i32.sub end end @@ -2332,17 +2168,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2488,19 +2324,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2515,7 +2351,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2526,10 +2362,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2537,10 +2373,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2551,7 +2387,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2581,17 +2417,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2606,7 +2442,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2617,10 +2453,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2628,10 +2464,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2642,7 +2478,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2668,17 +2504,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2693,7 +2529,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2704,10 +2540,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2715,10 +2551,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2729,7 +2565,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2766,131 +2602,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2907,59 +2721,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2976,7 +2784,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2987,11 +2795,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3005,17 +2813,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3226,7 +3034,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -3235,28 +3043,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3284,7 +3092,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -3298,32 +3106,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -3340,29 +3147,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3484,25 +3291,25 @@ (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 21092 - i32.lt_s - if - i32.const 37504 - i32.const 37552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 + block $__inlined_func$~lib/util/number/itoa64 (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 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i64.eqz if @@ -3511,7 +3318,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 19200 - local.set $1 br $__inlined_func$~lib/util/number/itoa64 end i64.const 0 @@ -3522,7 +3328,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 select local.tee $0 i64.const 4294967295 @@ -3531,7 +3337,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $1 i32.const 100000 i32.lt_u @@ -3578,9 +3384,9 @@ i32.add end end - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $4 i32.const 1 i32.shl i32.const 1 @@ -3588,8 +3394,8 @@ local.tee $1 i32.store local.get $1 - local.get $3 local.get $2 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -3643,7 +3449,7 @@ i32.add end end - local.get $4 + local.get $3 i32.add local.tee $2 i32.const 1 @@ -3674,7 +3480,7 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $3 + local.tee $4 i32.const 10000 i32.rem_u local.tee $5 @@ -3705,10 +3511,10 @@ i32.shl local.get $1 i32.add - local.get $3 + local.get $4 i32.const 10000 i32.div_u - local.tee $3 + local.tee $4 i32.const 100 i32.div_u i32.const 2 @@ -3716,7 +3522,7 @@ i32.const 19212 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -3737,7 +3543,7 @@ local.get $2 call $~lib/util/number/utoa32_dec_lut end - local.get $4 + local.get $3 if local.get $1 i32.const 45 @@ -3747,32 +3553,32 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21092 - i32.lt_s - if - i32.const 37504 - i32.const 37552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (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 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 20 i32.sub @@ -3781,7 +3587,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3790,9 +3596,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3800,31 +3606,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1056 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -3847,7 +3652,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -3935,18 +3740,17 @@ i32.shr_u if block $for-continue|0 - local.get $8 - i32.const 1 - i32.sub - local.get $7 - i32.gt_u - i32.const 0 local.get $2 i32.const 55295 i32.sub i32.const 1025 i32.lt_u - select + local.get $8 + i32.const 1 + i32.sub + local.get $7 + i32.gt_u + i32.and if local.get $7 i32.const 1 @@ -4082,22 +3886,22 @@ i32.shl i32.const 1488 i32.add - local.tee $2 + local.tee $1 i32.load16_u offset=6 - local.set $1 + local.set $2 local.get $5 i32.const 1 i32.shl local.get $6 i32.add local.tee $4 - local.get $2 + local.get $1 i32.load offset=2 i32.store local.get $4 - local.get $1 + local.get $2 i32.store16 offset=4 - local.get $1 + local.get $2 i32.const 0 i32.ne i32.const 1 @@ -4188,15 +3992,15 @@ ) (func $start:std/string-casemapping (local $0 i64) - (local $1 i64) + (local $1 i32) (local $2 i64) (local $3 i64) - (local $4 i32) + (local $4 i64) (local $5 i32) - (local $6 i64) + (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) global.get $~lib/memory/__stack_pointer i32.const 28 i32.sub @@ -4213,16 +4017,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $1 i64.const 0 i64.store - local.get $9 + local.get $1 i64.const 0 i64.store offset=8 - local.get $9 + local.get $1 i64.const 0 i64.store offset=16 - local.get $9 + local.get $1 i32.const 0 i32.store offset=24 memory.size @@ -4257,19 +4061,19 @@ i32.store i32.const 1376 global.set $~lib/rt/itcms/fromSpace - local.get $9 + local.get $1 i32.const 1056 i32.store offset=8 i32.const 1056 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 - local.get $9 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4286,14 +4090,14 @@ i32.store offset=8 i32.const 1056 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 - local.get $9 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4310,14 +4114,14 @@ i32.store offset=8 i32.const 11808 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=4 - local.get $9 + local.get $1 i32.const 11856 call $~lib/string/String.__eq i32.eqz @@ -4334,14 +4138,14 @@ i32.store offset=8 i32.const 11904 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 11952 i32.store offset=4 - local.get $9 + local.get $1 i32.const 11952 call $~lib/string/String.__eq i32.eqz @@ -4358,14 +4162,14 @@ i32.store offset=8 i32.const 12000 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12096 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12096 call $~lib/string/String.__eq i32.eqz @@ -4382,14 +4186,14 @@ i32.store offset=8 i32.const 12096 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12192 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12192 call $~lib/string/String.__eq i32.eqz @@ -4406,14 +4210,14 @@ i32.store offset=8 i32.const 12288 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12352 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12352 call $~lib/string/String.__eq i32.eqz @@ -4430,14 +4234,14 @@ i32.store offset=8 i32.const 12352 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12416 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12416 call $~lib/string/String.__eq i32.eqz @@ -4454,14 +4258,14 @@ i32.store offset=8 i32.const 12480 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12576 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12576 call $~lib/string/String.__eq i32.eqz @@ -4478,14 +4282,14 @@ i32.store offset=8 i32.const 12576 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12672 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12672 call $~lib/string/String.__eq i32.eqz @@ -4502,14 +4306,14 @@ i32.store offset=8 i32.const 12768 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12864 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12864 call $~lib/string/String.__eq i32.eqz @@ -4526,14 +4330,14 @@ i32.store offset=8 i32.const 12864 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12960 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12960 call $~lib/string/String.__eq i32.eqz @@ -4550,14 +4354,14 @@ i32.store offset=8 i32.const 13056 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13136 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13136 call $~lib/string/String.__eq i32.eqz @@ -4574,14 +4378,14 @@ i32.store offset=8 i32.const 13216 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13296 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13296 call $~lib/string/String.__eq i32.eqz @@ -4598,14 +4402,14 @@ i32.store offset=8 i32.const 13376 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13440 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13440 call $~lib/string/String.__eq i32.eqz @@ -4622,14 +4426,14 @@ i32.store offset=8 i32.const 13504 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13584 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13584 call $~lib/string/String.__eq i32.eqz @@ -4646,14 +4450,14 @@ i32.store offset=8 i32.const 13664 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13744 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13744 call $~lib/string/String.__eq i32.eqz @@ -4670,14 +4474,14 @@ i32.store offset=8 i32.const 13824 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13888 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13888 call $~lib/string/String.__eq i32.eqz @@ -4694,14 +4498,14 @@ i32.store offset=8 i32.const 13952 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14032 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14032 call $~lib/string/String.__eq i32.eqz @@ -4718,14 +4522,14 @@ i32.store offset=8 i32.const 14112 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14192 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14192 call $~lib/string/String.__eq i32.eqz @@ -4742,14 +4546,14 @@ i32.store offset=8 i32.const 14272 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14432 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14432 call $~lib/string/String.__eq i32.eqz @@ -4766,14 +4570,14 @@ i32.store offset=8 i32.const 14272 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14592 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14592 call $~lib/string/String.__eq i32.eqz @@ -4790,14 +4594,14 @@ i32.store offset=8 i32.const 14752 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14784 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14784 call $~lib/string/String.__eq i32.eqz @@ -4814,14 +4618,14 @@ i32.store offset=8 i32.const 14816 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14848 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14848 call $~lib/string/String.__eq i32.eqz @@ -4838,14 +4642,14 @@ i32.store offset=8 i32.const 14880 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15088 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15088 call $~lib/string/String.__eq i32.eqz @@ -4862,20 +4666,20 @@ i32.store offset=12 i32.const 14752 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15296 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15296 call $~lib/string/String.__eq i32.eqz @@ -4892,20 +4696,20 @@ i32.store offset=12 i32.const 15328 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15360 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15360 call $~lib/string/String.__eq i32.eqz @@ -4922,20 +4726,20 @@ i32.store offset=12 i32.const 15392 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15392 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15392 call $~lib/string/String.__eq i32.eqz @@ -4949,20 +4753,20 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15648 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -4976,20 +4780,20 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15648 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -5006,14 +4810,14 @@ i32.store offset=8 i32.const 15680 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15712 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15712 call $~lib/string/String.__eq i32.eqz @@ -5030,14 +4834,14 @@ i32.store offset=8 i32.const 15744 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15776 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15776 call $~lib/string/String.__eq i32.eqz @@ -5054,14 +4858,14 @@ i32.store offset=8 i32.const 15808 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15840 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15840 call $~lib/string/String.__eq i32.eqz @@ -5078,14 +4882,14 @@ i32.store offset=8 i32.const 15872 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15904 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15904 call $~lib/string/String.__eq i32.eqz @@ -5102,14 +4906,14 @@ i32.store offset=8 i32.const 15936 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15968 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15968 call $~lib/string/String.__eq i32.eqz @@ -5126,14 +4930,14 @@ i32.store offset=8 i32.const 16000 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16032 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16032 call $~lib/string/String.__eq i32.eqz @@ -5150,14 +4954,14 @@ i32.store offset=8 i32.const 16064 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16096 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16096 call $~lib/string/String.__eq i32.eqz @@ -5174,14 +4978,14 @@ i32.store offset=8 i32.const 16128 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16160 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16160 call $~lib/string/String.__eq i32.eqz @@ -5198,14 +5002,14 @@ i32.store offset=8 i32.const 16192 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16224 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16224 call $~lib/string/String.__eq i32.eqz @@ -5222,14 +5026,14 @@ i32.store offset=8 i32.const 16256 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16288 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16288 call $~lib/string/String.__eq i32.eqz @@ -5246,14 +5050,14 @@ i32.store offset=8 i32.const 16320 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16352 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16352 call $~lib/string/String.__eq i32.eqz @@ -5270,14 +5074,14 @@ i32.store offset=8 i32.const 16384 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16416 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16416 call $~lib/string/String.__eq i32.eqz @@ -5294,14 +5098,14 @@ i32.store offset=8 i32.const 16448 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16480 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16480 call $~lib/string/String.__eq i32.eqz @@ -5318,14 +5122,14 @@ i32.store offset=8 i32.const 16512 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16544 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16544 call $~lib/string/String.__eq i32.eqz @@ -5342,14 +5146,14 @@ i32.store offset=8 i32.const 16576 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16608 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16608 call $~lib/string/String.__eq i32.eqz @@ -5366,14 +5170,14 @@ i32.store offset=8 i32.const 16640 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16672 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16672 call $~lib/string/String.__eq i32.eqz @@ -5390,14 +5194,14 @@ i32.store offset=8 i32.const 16704 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16736 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16736 call $~lib/string/String.__eq i32.eqz @@ -5414,14 +5218,14 @@ i32.store offset=8 i32.const 16768 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16800 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16800 call $~lib/string/String.__eq i32.eqz @@ -5438,14 +5242,14 @@ i32.store offset=8 i32.const 16832 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16864 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16864 call $~lib/string/String.__eq i32.eqz @@ -5462,14 +5266,14 @@ i32.store offset=8 i32.const 16896 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16928 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16928 call $~lib/string/String.__eq i32.eqz @@ -5486,14 +5290,14 @@ i32.store offset=8 i32.const 16960 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16992 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16992 call $~lib/string/String.__eq i32.eqz @@ -5510,14 +5314,14 @@ i32.store offset=8 i32.const 17024 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17056 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17056 call $~lib/string/String.__eq i32.eqz @@ -5534,14 +5338,14 @@ i32.store offset=8 i32.const 17088 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17120 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17120 call $~lib/string/String.__eq i32.eqz @@ -5558,14 +5362,14 @@ i32.store offset=8 i32.const 17152 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17184 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17184 call $~lib/string/String.__eq i32.eqz @@ -5582,14 +5386,14 @@ i32.store offset=8 i32.const 17216 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17248 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17248 call $~lib/string/String.__eq i32.eqz @@ -5606,14 +5410,14 @@ i32.store offset=8 i32.const 17280 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16352 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16352 call $~lib/string/String.__eq i32.eqz @@ -5630,14 +5434,14 @@ i32.store offset=8 i32.const 17312 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17344 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17344 call $~lib/string/String.__eq i32.eqz @@ -5654,14 +5458,14 @@ i32.store offset=8 i32.const 17376 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17408 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17408 call $~lib/string/String.__eq i32.eqz @@ -5678,14 +5482,14 @@ i32.store offset=8 i32.const 17440 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17472 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17472 call $~lib/string/String.__eq i32.eqz @@ -5702,14 +5506,14 @@ i32.store offset=8 i32.const 17504 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17536 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17536 call $~lib/string/String.__eq i32.eqz @@ -5726,14 +5530,14 @@ i32.store offset=8 i32.const 17568 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17600 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17600 call $~lib/string/String.__eq i32.eqz @@ -5750,14 +5554,14 @@ i32.store offset=8 i32.const 17632 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17664 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17664 call $~lib/string/String.__eq i32.eqz @@ -5774,14 +5578,14 @@ i32.store offset=8 i32.const 17696 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17728 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17728 call $~lib/string/String.__eq i32.eqz @@ -5798,14 +5602,14 @@ i32.store offset=8 i32.const 17760 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17792 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17792 call $~lib/string/String.__eq i32.eqz @@ -5822,14 +5626,14 @@ i32.store offset=8 i32.const 17824 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17856 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17856 call $~lib/string/String.__eq i32.eqz @@ -5846,14 +5650,14 @@ i32.store offset=8 i32.const 17888 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17920 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17920 call $~lib/string/String.__eq i32.eqz @@ -5870,14 +5674,14 @@ i32.store offset=8 i32.const 17952 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17984 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17984 call $~lib/string/String.__eq i32.eqz @@ -5894,14 +5698,14 @@ i32.store offset=8 i32.const 18016 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18048 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18048 call $~lib/string/String.__eq i32.eqz @@ -5918,14 +5722,14 @@ i32.store offset=8 i32.const 18080 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18112 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18112 call $~lib/string/String.__eq i32.eqz @@ -5942,14 +5746,14 @@ i32.store offset=8 i32.const 15328 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18144 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18144 call $~lib/string/String.__eq i32.eqz @@ -5966,14 +5770,14 @@ i32.store offset=8 i32.const 18176 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18208 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18208 call $~lib/string/String.__eq i32.eqz @@ -5990,14 +5794,14 @@ i32.store offset=8 i32.const 18240 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18272 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18272 call $~lib/string/String.__eq i32.eqz @@ -6014,14 +5818,14 @@ i32.store offset=8 i32.const 18304 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18336 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18336 call $~lib/string/String.__eq i32.eqz @@ -6038,14 +5842,14 @@ i32.store offset=8 i32.const 18368 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18400 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18400 call $~lib/string/String.__eq i32.eqz @@ -6062,14 +5866,14 @@ i32.store offset=8 i32.const 18432 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18400 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18400 call $~lib/string/String.__eq i32.eqz @@ -6086,14 +5890,14 @@ i32.store offset=8 i32.const 18464 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18496 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18496 call $~lib/string/String.__eq i32.eqz @@ -6110,14 +5914,14 @@ i32.store offset=8 i32.const 18528 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18560 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18560 call $~lib/string/String.__eq i32.eqz @@ -6134,14 +5938,14 @@ i32.store offset=8 i32.const 18592 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18624 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18624 call $~lib/string/String.__eq i32.eqz @@ -6158,14 +5962,14 @@ i32.store offset=8 i32.const 18656 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18688 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18688 call $~lib/string/String.__eq i32.eqz @@ -6182,14 +5986,14 @@ i32.store offset=8 i32.const 18720 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18752 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18752 call $~lib/string/String.__eq i32.eqz @@ -6206,14 +6010,14 @@ i32.store offset=8 i32.const 18784 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18816 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18816 call $~lib/string/String.__eq i32.eqz @@ -6226,424 +6030,429 @@ unreachable end loop $for-loop|0 - local.get $8 + local.get $5 i32.const 1114111 i32.le_s if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 call $~lib/string/String.fromCodePoint - local.tee $9 + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.tee $5 + local.tee $6 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 call $~lib/string/String#toUpperCase - local.tee $4 + local.tee $1 i32.store offset=24 - block $__inlined_func$~lib/string/String#codePointAt - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt (result i32) + i32.const -1 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $7 i32.eqz - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt + drop + local.get $7 i32.const 1 i32.eq - local.get $5 + local.get $6 i32.load16_u - local.tee $9 + local.tee $7 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt - local.get $5 + i32.or + if + local.get $7 + br $__inlined_func$~lib/string/String#codePointAt + end + local.get $7 + local.get $6 i32.load16_u offset=2 - local.tee $7 + local.tee $8 i32.const 64512 i32.and i32.const 56320 i32.ne br_if $__inlined_func$~lib/string/String#codePointAt + drop + local.get $8 local.get $7 - local.get $9 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s local.set $0 - block $__inlined_func$~lib/string/String#codePointAt0 - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt6 (result i32) + i32.const -1 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $7 i32.const 1 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt0 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt6 + drop + local.get $7 i32.const 2 i32.eq - local.get $5 + local.get $6 i32.load16_u offset=2 - local.tee $9 + local.tee $7 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt0 - local.get $5 + i32.or + if + local.get $7 + br $__inlined_func$~lib/string/String#codePointAt6 + end + local.get $7 + local.get $6 i32.load16_u offset=4 - local.tee $7 + local.tee $8 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt0 + br_if $__inlined_func$~lib/string/String#codePointAt6 + drop + local.get $8 local.get $7 - local.get $9 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_s if - local.get $3 + local.get $2 i64.const 16 i64.shl local.get $0 i64.add local.set $0 end - block $__inlined_func$~lib/string/String#codePointAt1 - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt8 (result i32) + i32.const -1 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $7 i32.const 2 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt1 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt8 + drop + local.get $7 i32.const 3 i32.eq - local.get $5 + local.get $6 i32.load16_u offset=4 - local.tee $9 + local.tee $7 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt1 - local.get $5 + i32.or + if + local.get $7 + br $__inlined_func$~lib/string/String#codePointAt8 + end + local.get $7 + local.get $6 i32.load16_u offset=6 - local.tee $5 + local.tee $6 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt1 - local.get $5 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt8 + drop + local.get $6 + local.get $7 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_s - if - local.get $3 + if (result i64) + local.get $2 i64.const 32 i64.shl local.get $0 i64.add - local.set $0 + else + local.get $0 end - block $__inlined_func$~lib/string/String#codePointAt2 - local.get $4 - local.tee $5 + local.set $2 + block $__inlined_func$~lib/string/String#codePointAt10 (result i32) + i32.const -1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $6 i32.eqz - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt2 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt10 + drop + local.get $6 i32.const 1 i32.eq - local.get $5 + local.get $1 i32.load16_u - local.tee $9 + local.tee $6 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt2 - local.get $5 + i32.or + if + local.get $6 + br $__inlined_func$~lib/string/String#codePointAt10 + end + local.get $6 + local.get $1 i32.load16_u offset=2 - local.tee $4 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt2 - local.get $4 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt10 + drop + local.get $7 + local.get $6 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.set $3 - block $__inlined_func$~lib/string/String#codePointAt3 - local.get $5 + local.set $0 + block $__inlined_func$~lib/string/String#codePointAt12 (result i32) + i32.const -1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $6 i32.const 1 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt3 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt12 + drop + local.get $6 i32.const 2 i32.eq - local.get $5 + local.get $1 i32.load16_u offset=2 - local.tee $9 + local.tee $6 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt3 - local.get $5 + i32.or + if + local.get $6 + br $__inlined_func$~lib/string/String#codePointAt12 + end + local.get $6 + local.get $1 i32.load16_u offset=4 - local.tee $4 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt3 - local.get $4 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt12 + drop + local.get $7 + local.get $6 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $2 + local.tee $3 i64.const 0 i64.ge_s if - local.get $2 + local.get $3 i64.const 16 i64.shl - local.get $3 + local.get $0 i64.add - local.set $3 + local.set $0 end - block $__inlined_func$~lib/string/String#codePointAt4 - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt14 (result i32) + i32.const -1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $6 i32.const 2 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt4 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt14 + drop + local.get $6 i32.const 3 i32.eq - local.get $5 + local.get $1 i32.load16_u offset=4 - local.tee $9 + local.tee $6 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt4 - local.get $5 + i32.or + if + local.get $6 + br $__inlined_func$~lib/string/String#codePointAt14 + end + local.get $6 + local.get $1 i32.load16_u offset=6 - local.tee $5 + local.tee $1 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt4 - local.get $5 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt14 + drop + local.get $1 + local.get $6 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $2 + local.tee $3 i64.const 0 i64.ge_s - if - local.get $2 + if (result i64) + local.get $3 i64.const 32 i64.shl - local.get $3 + local.get $0 i64.add - local.set $3 + else + local.get $0 end - local.get $8 + local.set $3 + local.get $5 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.set $2 - local.get $8 + local.set $0 + local.get $5 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $1 + local.tee $4 i64.const 0 i64.ge_s if - local.get $1 + local.get $4 i64.const 16 i64.shl - local.get $2 + local.get $0 i64.add - local.set $2 + local.set $0 end - local.get $8 + local.get $5 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $1 + local.tee $4 i64.const 0 i64.ge_s - if - local.get $1 + if (result i64) + local.get $4 i64.const 32 i64.shl - local.get $2 + local.get $0 i64.add - local.set $2 + else + local.get $0 end - local.get $8 + local.set $4 + local.get $5 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.set $1 - local.get $8 + local.set $0 + local.get $5 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $6 + local.tee $9 i64.const 0 i64.ge_s if - local.get $6 + local.get $9 i64.const 16 i64.shl - local.get $1 + local.get $0 i64.add - local.set $1 + local.set $0 end - local.get $8 + local.get $5 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $6 + local.tee $9 i64.const 0 i64.ge_s if - local.get $6 + local.get $9 i64.const 32 i64.shl - local.get $1 + local.get $0 i64.add - local.set $1 + local.set $0 end - local.get $0 local.get $2 + local.get $4 i64.ne if global.get $~lib/memory/__stack_pointer @@ -6651,7 +6460,7 @@ i32.store i32.const 18848 i32.const 1 - local.get $8 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -6661,20 +6470,20 @@ global.get $~lib/memory/__stack_pointer i32.const 18944 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 18944 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6685,20 +6494,20 @@ global.get $~lib/memory/__stack_pointer i32.const 20784 i32.store offset=4 - local.get $2 + local.get $4 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 20784 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6707,7 +6516,7 @@ f64.const 0 call $~lib/builtins/trace end - local.get $1 + local.get $0 local.get $3 i64.ne if @@ -6716,7 +6525,7 @@ i32.store i32.const 20848 i32.const 1 - local.get $8 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -6728,18 +6537,18 @@ i32.store offset=4 local.get $3 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 20944 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6750,20 +6559,20 @@ global.get $~lib/memory/__stack_pointer i32.const 21008 i32.store offset=4 - local.get $1 + local.get $0 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 21008 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6772,10 +6581,10 @@ f64.const 0 call $~lib/builtins/trace end - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 + local.set $5 br $for-loop|0 end end @@ -6795,6 +6604,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -6835,57 +6645,56 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store loop $for-loop|0 - local.get $4 + local.get $3 local.get $8 i32.lt_u if - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u - local.tee $3 + local.tee $2 i32.const 7 i32.shr_u if block $for-continue|0 - local.get $8 - i32.const 1 - i32.sub - local.get $4 - i32.gt_u - i32.const 0 - local.get $3 + local.get $2 i32.const 55295 i32.sub i32.const 1025 i32.lt_u - select + local.get $8 + i32.const 1 + i32.sub + local.get $3 + i32.gt_u + i32.and if - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u offset=2 - local.tee $7 + local.tee $4 i32.const 56319 i32.sub i32.const 1025 i32.lt_u if - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 - local.get $7 + local.set $3 + local.get $4 i32.const 1023 i32.and - local.get $3 + local.get $2 local.tee $1 i32.const 1023 i32.and @@ -6894,53 +6703,53 @@ i32.or i32.const 65536 i32.add - local.tee $3 + local.tee $2 i32.const 131072 i32.ge_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 - i32.add local.get $7 + i32.add + local.get $4 i32.const 16 i32.shl local.get $1 i32.or i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-continue|0 end end end - local.get $3 + local.get $2 i32.const 304 i32.eq if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add i32.const 50790505 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 else - local.get $3 + local.get $2 i32.const 931 i32.eq if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add i32.const 962 i32.const 963 @@ -6950,31 +6759,32 @@ if (result i32) block $~lib/util/string/isFinalSigma|inlined.0 (result i32) i32.const 0 - local.set $2 + local.set $1 + local.get $3 i32.const 0 - local.get $4 - local.tee $3 + local.get $3 + local.tee $2 i32.const 30 i32.sub - local.tee $1 - local.get $1 + local.tee $5 + local.get $5 i32.const 0 i32.lt_s select local.set $9 loop $while-continue|1 - local.get $3 + local.get $2 local.get $9 i32.gt_s if i32.const -1 - local.set $1 + local.set $5 block $~lib/util/string/codePointBefore|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 - local.get $3 + local.get $2 i32.const 1 i32.sub i32.const 1 @@ -6982,22 +6792,22 @@ local.get $0 i32.add i32.load16_u - local.tee $7 + local.tee $11 i32.const 64512 i32.and i32.const 56320 i32.eq - local.get $3 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.ge_s i32.and if - local.get $7 + local.get $11 i32.const 1023 i32.and - local.get $3 + local.get $2 i32.const 2 i32.sub i32.const 1 @@ -7013,7 +6823,7 @@ i32.add i32.const 65536 i32.add - local.set $1 + local.set $5 local.get $10 i32.const 64512 i32.and @@ -7022,20 +6832,20 @@ br_if $~lib/util/string/codePointBefore|inlined.0 end i32.const 65533 - local.get $7 - local.get $7 + local.get $11 + local.get $11 i32.const 63488 i32.and i32.const 55296 i32.eq select - local.set $1 + local.set $5 end - local.get $1 + local.get $5 i32.const 918000 i32.lt_u if (result i32) - local.get $1 + local.get $5 i32.const 8 i32.shr_u i32.const 7212 @@ -7045,14 +6855,14 @@ i32.shl i32.const 7212 i32.add - local.get $1 + local.get $5 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $1 + local.get $5 i32.const 7 i32.and i32.shr_u @@ -7063,12 +6873,11 @@ end i32.eqz if - i32.const 0 - local.get $1 + local.get $5 i32.const 127370 i32.lt_u if (result i32) - local.get $1 + local.get $5 i32.const 8 i32.shr_u i32.const 10220 @@ -7078,14 +6887,14 @@ i32.shl i32.const 10220 i32.add - local.get $1 + local.get $5 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $1 + local.get $5 i32.const 7 i32.and i32.shr_u @@ -7094,32 +6903,33 @@ else i32.const 0 end - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - i32.const 1 - local.set $2 + if (result i32) + i32.const 1 + else + i32.const 0 + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.set $1 end - local.get $3 - local.get $1 + local.get $2 + local.get $5 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $3 + local.set $2 br $while-continue|1 end end i32.const 0 - local.get $2 + local.get $1 i32.eqz br_if $~lib/util/string/isFinalSigma|inlined.0 drop - local.get $4 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 30 i32.add local.tee $1 @@ -7128,13 +6938,13 @@ local.get $8 i32.lt_s select - local.set $2 + local.set $4 loop $while-continue|2 local.get $2 - local.get $3 - i32.gt_s + local.get $4 + i32.lt_s if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -7146,25 +6956,25 @@ i32.const 55296 i32.eq local.get $8 - local.get $3 + local.get $2 i32.const 1 i32.add i32.ne i32.and if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u offset=2 - local.tee $7 + local.tee $5 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $7 + local.get $5 local.get $1 i32.const 10 i32.shl @@ -7244,9 +7054,9 @@ i32.ge_u i32.const 1 i32.add - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 br $while-continue|2 end end @@ -7258,53 +7068,53 @@ select i32.store16 else - local.get $3 + local.get $2 i32.const 9398 i32.sub i32.const 25 i32.le_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $2 i32.const 26 i32.add i32.store16 else - local.get $3 + local.get $2 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.tee $3 + local.tee $1 i32.const 65536 i32.lt_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $1 i32.store16 else - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $1 i32.const 65536 i32.sub - local.tee $3 + local.tee $1 i32.const 10 i32.shr_u i32.const 55296 i32.or - local.get $3 + local.get $1 i32.const 1023 i32.and i32.const 56320 @@ -7313,40 +7123,40 @@ i32.shl i32.or i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 end end end end end else - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $2 i32.const 7084 i32.add i32.load8_u i32.store16 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 - local.get $5 + local.set $3 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|0 end end + local.get $7 local.get $6 - local.get $5 i32.const 1 i32.shl call $~lib/rt/itcms/__renew @@ -7430,4 +7240,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 37476 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 21056 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 21060 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index c205a6bed6..cf75434ac5 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -73,13 +73,13 @@ (local $0 i32) (local $1 i32) i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1712 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -118,160 +118,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 38924 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 22512 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1344 - i32.const 1408 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 22516 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -308,11 +154,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -324,28 +169,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -357,19 +199,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -394,9 +236,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -404,17 +246,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -542,7 +384,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -553,7 +395,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -573,44 +415,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -620,7 +461,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -630,20 +471,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -671,7 +512,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -698,15 +539,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -718,15 +556,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -747,6 +585,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -756,7 +597,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -793,8 +634,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -953,7 +794,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1078,7 +923,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1088,7 +933,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1101,14 +946,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1133,56 +977,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1283,12 +1124,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1304,14 +1145,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1322,18 +1163,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1344,54 +1184,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1399,16 +1235,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1416,15 +1252,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1452,12 +1288,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1471,7 +1307,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1481,7 +1317,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1499,12 +1335,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1534,8 +1370,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1564,19 +1400,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1585,18 +1421,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1605,10 +1441,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1617,97 +1453,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1739,7 +1575,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1754,17 +1590,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1910,19 +1746,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1937,7 +1773,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1948,10 +1784,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1959,10 +1795,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1973,7 +1809,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2003,17 +1839,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2028,7 +1864,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2039,10 +1875,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2050,10 +1886,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2064,7 +1900,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2090,17 +1926,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2115,7 +1951,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2126,10 +1962,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2137,10 +1973,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2151,7 +1987,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2188,131 +2024,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2329,59 +2143,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2398,7 +2206,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2409,11 +2217,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2427,17 +2235,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2668,7 +2476,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2682,32 +2490,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2724,29 +2531,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2802,18 +2609,17 @@ i32.const 2 i32.add else + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $4 local.get $0 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $3 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $0 i32.load16_u offset=2 @@ -2888,7 +2694,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2897,16 +2703,15 @@ (func $~start (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 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2918,7 +2723,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2981,7 +2786,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3159,7 +2964,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3183,10 +2988,9 @@ call $~lib/string/String.UTF16.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=8 local.get $0 @@ -3205,215 +3009,15 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF16DecodeUnsafe 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 22540 i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - local.set $2 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1552 - i32.store offset=8 - local.get $1 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1056 - i32.store offset=8 - local.get $1 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1584 - i32.store offset=8 - local.get $1 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1616 - i32.store offset=8 - local.get $1 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1648 - i32.store offset=8 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1680 - i32.store offset=8 - local.get $1 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - i32.add - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1552 - i32.store offset=8 - local.get $0 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3461,7 +3065,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3622,7 +3226,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3793,7 +3397,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3838,20 +3442,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 1824 i32.store offset=4 i32.const 1824 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 + i32.store local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3875,20 +3479,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 1888 i32.store offset=4 i32.const 1888 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 + i32.store local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3912,20 +3516,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 1888 i32.store offset=4 i32.const 1888 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 + i32.store local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3959,7 +3563,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3987,10 +3591,9 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=8 local.get $0 @@ -4016,7 +3619,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4050,10 +3653,9 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=8 local.get $0 @@ -4237,7 +3839,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/string-encoding/testUTF8DecodeUnsafe + (func $std/string-encoding/testUTF16DecodeUnsafe (local $0 i32) (local $1 i32) (local $2 i32) @@ -4257,66 +3859,279 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1056 i32.store - i32.const 2 - global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $1 + call $~lib/string/String.UTF16.encode + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store - i32.const 1056 + i32.const 1052 + i32.load + local.set $1 + local.get $0 i32.const 0 - call $~lib/string/String.UTF8.byteLength + call $~lib/string/String.UTF16.decodeUnsafe local.set $2 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 1552 i32.store offset=8 - local.get $0 + local.get $2 i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 135 + i32.const 42 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 local.get $1 - local.get $2 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=8 + local.get $1 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1584 + i32.store offset=8 + local.get $1 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1616 + i32.store offset=8 + local.get $1 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1648 + i32.store offset=8 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 i32.store local.get $2 + i32.const 1680 + i32.store offset=8 + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 1552 + i32.store offset=8 + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 22540 + i32.lt_s + if + i32.const 38944 + i32.const 38992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + 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 $1 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 i32.store offset=8 + local.get $2 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=8 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4328,19 +4143,19 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1584 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1584 call $~lib/string/String.__eq i32.eqz @@ -4352,21 +4167,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1648 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1648 call $~lib/string/String.__eq i32.eqz @@ -4378,21 +4193,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1680 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1680 call $~lib/string/String.__eq i32.eqz @@ -4404,21 +4219,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1552 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1552 call $~lib/string/String.__eq i32.eqz @@ -4430,21 +4245,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 2000 i32.store offset=8 - local.get $0 + local.get $1 i32.const 2000 call $~lib/string/String.__eq i32.eqz @@ -4456,21 +4271,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1680 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1680 call $~lib/string/String.__eq i32.eqz @@ -4482,21 +4297,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 1552 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1552 call $~lib/string/String.__eq i32.eqz @@ -4672,20 +4487,20 @@ local.get $1 i32.const -2 i32.and - local.tee $2 + local.tee $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $0 local.get $2 + local.get $0 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4720,11 +4535,9 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store - local.get $0 - local.set $4 local.get $5 - local.set $0 - local.get $4 + local.set $4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4732,24 +4545,24 @@ i32.shr_u i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add local.set $6 loop $while-continue|0 - local.get $4 + local.get $0 local.get $6 i32.lt_u if - local.get $4 + local.get $0 i32.load16_u local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 + local.get $4 local.get $3 i32.store8 - local.get $0 + local.get $4 i32.const 1 i32.add else @@ -4757,7 +4570,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $0 + local.get $4 local.get $3 i32.const 6 i32.shr_u @@ -4772,7 +4585,7 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $4 i32.const 2 i32.add else @@ -4782,18 +4595,17 @@ i32.const 55296 i32.eq if + local.get $3 + i32.const 56320 + i32.lt_u local.get $6 - local.get $4 + local.get $0 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $3 - i32.const 56320 - i32.lt_u - select + i32.and if - local.get $4 + local.get $0 i32.load16_u offset=2 local.tee $7 i32.const 64512 @@ -4801,7 +4613,7 @@ i32.const 56320 i32.eq if - local.get $0 + local.get $4 local.get $3 i32.const 1023 i32.and @@ -4847,14 +4659,14 @@ i32.or i32.or i32.store - local.get $0 + local.get $4 i32.const 4 i32.add - local.set $0 - local.get $4 + local.set $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 br $while-continue|0 end end @@ -4877,7 +4689,7 @@ end local.set $3 end - local.get $0 + local.get $4 local.get $3 i32.const 12 i32.shr_u @@ -4894,29 +4706,29 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $4 local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $4 i32.const 3 i32.add end end - local.set $0 - local.get $4 + local.set $4 + local.get $0 i32.const 2 i32.add - local.set $4 + local.set $0 br $while-continue|0 end end local.get $1 if - local.get $0 + local.get $4 i32.const 0 i32.store8 end @@ -4950,14 +4762,12 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 local.get $0 - local.tee $3 + local.get $1 i32.add - local.set $5 - local.get $3 - local.get $5 - i32.gt_u + local.tee $5 + local.get $0 + i32.lt_u if i32.const 0 i32.const 1776 @@ -4972,49 +4782,49 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $5 i32.lt_u if block $while-break|0 - local.get $3 + local.get $0 i32.load8_u - local.set $4 - local.get $3 + local.set $6 + local.get $0 i32.const 1 i32.add - local.set $3 - local.get $4 + local.set $0 + local.get $6 i32.const 128 i32.and if - local.get $3 + local.get $0 local.get $5 i32.eq br_if $while-break|0 - local.get $3 + local.get $0 i32.load8_u i32.const 63 i32.and - local.set $6 - local.get $3 + local.set $7 + local.get $0 i32.const 1 i32.add - local.set $3 - local.get $4 + local.set $0 + local.get $6 i32.const 224 i32.and i32.const 192 i32.eq if local.get $1 + local.get $7 local.get $6 - local.get $4 i32.const 31 i32.and i32.const 6 @@ -5022,65 +4832,65 @@ i32.or i32.store16 else - local.get $3 + local.get $0 local.get $5 i32.eq br_if $while-break|0 - local.get $3 + local.get $0 i32.load8_u i32.const 63 i32.and - local.set $7 - local.get $3 + local.set $4 + local.get $0 i32.const 1 i32.add - local.set $3 - local.get $4 + local.set $0 + local.get $6 i32.const 240 i32.and i32.const 224 i32.eq if - local.get $7 local.get $4 + local.get $6 i32.const 15 i32.and i32.const 12 i32.shl - local.get $6 + local.get $7 i32.const 6 i32.shl i32.or i32.or local.set $4 else - local.get $3 + local.get $0 local.get $5 i32.eq br_if $while-break|0 - local.get $3 + local.get $0 i32.load8_u i32.const 63 i32.and - local.get $4 + local.get $6 i32.const 7 i32.and i32.const 18 i32.shl - local.get $6 + local.get $7 i32.const 12 i32.shl i32.or - local.get $7 + local.get $4 i32.const 6 i32.shl i32.or i32.or local.set $4 - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 end local.get $4 i32.const 65536 @@ -5115,13 +4925,13 @@ end end else - local.get $4 + local.get $6 i32.eqz local.get $2 i32.and br_if $while-break|0 local.get $1 - local.get $4 + local.get $6 i32.store16 end local.get $1 @@ -5132,15 +4942,15 @@ end end end - block $__inlined_func$~lib/rt/itcms/__renew + block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $1 - local.get $0 + local.get $3 i32.sub - local.tee $2 - local.get $0 + local.tee $0 + local.get $3 i32.const 20 i32.sub - local.tee $3 + local.tee $1 i32.load i32.const -4 i32.and @@ -5148,33 +4958,181 @@ i32.sub i32.le_u if - local.get $3 - local.get $2 + local.get $1 + local.get $0 i32.store offset=16 + local.get $3 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 - local.get $2 + local.tee $2 local.get $3 + local.get $0 + local.get $1 i32.load offset=16 - local.tee $0 + local.tee $1 local.get $0 - local.get $2 - i32.gt_u + local.get $1 + i32.lt_u select call $~lib/memory/memory.copy - local.get $1 - local.set $0 + local.get $2 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 38924 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 22512 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1344 + i32.const 1408 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 22516 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 9302607f35..0888611a85 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -956,12 +956,11 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $1 @@ -1072,20 +1071,20 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 13648 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 15296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1376 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 16224 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 17280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -1152,7 +1151,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1175,7 +1174,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1185,15 +1184,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -1258,30 +1257,6 @@ 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) @@ -1318,11 +1293,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -1334,28 +1308,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1367,19 +1338,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1404,9 +1375,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1414,17 +1385,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1552,7 +1523,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1563,7 +1534,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1583,44 +1554,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1630,7 +1600,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1640,20 +1610,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1681,7 +1651,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1708,15 +1678,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1728,15 +1695,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1757,6 +1724,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1766,7 +1736,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1803,8 +1773,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1963,7 +1933,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -2088,7 +2062,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -2098,7 +2072,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -2111,14 +2085,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -2143,56 +2116,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -2340,14 +2310,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2357,17 +2327,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2383,22 +2353,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2409,11 +2379,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2508,10 +2478,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -2519,7 +2485,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -2530,54 +2499,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -2585,16 +2550,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -2603,7 +2568,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -2611,9 +2576,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -2624,11 +2589,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -2639,12 +2604,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2657,89 +2622,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -2747,7 +2712,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2827,17 +2792,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2983,19 +2948,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3010,7 +2975,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -3021,10 +2986,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3032,10 +2997,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -3046,7 +3011,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3076,17 +3041,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3101,7 +3066,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3112,10 +3077,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3123,10 +3088,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3137,7 +3102,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3163,17 +3128,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3188,7 +3153,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3199,10 +3164,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3210,10 +3175,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3224,7 +3189,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3261,131 +3226,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 i32.const 8 @@ -3402,59 +3345,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3471,7 +3408,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3482,11 +3419,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3500,17 +3437,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3715,66 +3652,6 @@ end end ) - (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 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -3784,7 +3661,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz if i32.const 0 @@ -3796,7 +3673,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.eqz if i32.const -1 @@ -3809,25 +3686,25 @@ i32.gt_s select local.tee $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select local.set $2 - local.get $3 local.get $4 + local.get $3 i32.sub - local.set $3 + local.set $4 loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.le_s if local.get $0 local.get $2 local.get $1 - local.get $4 + local.get $3 call $~lib/util/string/compareImpl i32.eqz if @@ -3877,7 +3754,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz if local.get $0 @@ -3894,7 +3771,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.eqz if i32.const -1 @@ -3907,12 +3784,12 @@ i32.gt_s select local.tee $2 - local.get $3 local.get $4 + local.get $3 i32.sub - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select local.set $2 @@ -3924,7 +3801,7 @@ local.get $0 local.get $2 local.get $1 - local.get $4 + local.get $3 call $~lib/util/string/compareImpl i32.eqz if @@ -4004,28 +3881,29 @@ return end local.get $0 + local.tee $2 i32.load16_u - local.set $2 + local.set $0 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $2 + local.get $0 i32.const 128 i32.or i32.const 160 i32.eq - local.get $2 + local.get $0 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $2 + local.get $0 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $2 + local.get $0 i32.const -8192 i32.add i32.const 10 @@ -4034,31 +3912,31 @@ drop block $break|0 block $case6|0 - local.get $2 + local.get $0 i32.const 5760 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8232 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8233 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8239 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8287 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 12288 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 65279 i32.eq br_if $case6|0 @@ -4070,12 +3948,12 @@ i32.const 0 end if - local.get $0 + local.get $2 i32.const 2 i32.add - local.tee $0 + local.tee $2 i32.load16_u - local.set $2 + local.set $0 local.get $3 i32.const 1 i32.sub @@ -4085,14 +3963,13 @@ end f64.const 1 local.set $4 - i32.const 1 - local.get $2 + local.get $0 i32.const 43 i32.eq - local.get $2 + local.get $0 i32.const 45 i32.eq - select + i32.or if local.get $3 i32.const 1 @@ -4105,28 +3982,27 @@ end f64.const -1 f64.const 1 - local.get $2 + local.get $0 i32.const 45 i32.eq select local.set $4 - local.get $0 + local.get $2 i32.const 2 i32.add - local.tee $0 + local.tee $2 i32.load16_u - local.set $2 + local.set $0 end local.get $1 if - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if f64.const nan:0x8000000000000 return @@ -4135,16 +4011,15 @@ i32.const 16 i32.eq if - local.get $2 + local.get $0 i32.const 48 i32.eq - i32.const 0 local.get $3 i32.const 2 i32.gt_s - select + i32.and if (result i32) - local.get $0 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or @@ -4158,47 +4033,46 @@ i32.const 2 i32.sub local.set $3 - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 end end else + local.get $0 + i32.const 48 + i32.eq local.get $3 i32.const 2 i32.gt_s - i32.const 0 - local.get $2 - i32.const 48 - i32.eq - select + i32.and if block $break|1 block $case2|1 block $case1|1 - local.get $0 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $2 + local.tee $0 i32.const 98 i32.ne if - local.get $2 + local.get $0 i32.const 111 i32.eq br_if $case1|1 - local.get $2 + local.get $0 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 local.get $3 i32.const 2 i32.sub @@ -4207,10 +4081,10 @@ local.set $1 br $break|1 end - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 local.get $3 i32.const 2 i32.sub @@ -4219,10 +4093,10 @@ local.set $1 br $break|1 end - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 local.get $3 i32.const 2 i32.sub @@ -4240,40 +4114,40 @@ loop $while-continue|2 block $while-break|2 local.get $3 - local.tee $2 + local.tee $0 i32.const 1 i32.sub local.set $3 - local.get $2 + local.get $0 if local.get $1 - local.get $0 + local.get $2 i32.load16_u - local.tee $2 + local.tee $0 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 48 i32.sub else - local.get $2 + local.get $0 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $2 + local.get $0 i32.const 55 i32.sub else - local.get $2 + local.get $0 i32.const 87 i32.sub - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 97 i32.sub i32.const 25 @@ -4281,7 +4155,7 @@ select end end - local.tee $2 + local.tee $0 i32.le_u if local.get $5 @@ -4302,14 +4176,14 @@ local.get $1 f64.convert_i32_s f64.mul - local.get $2 + local.get $0 f64.convert_i32_u f64.add local.set $5 - local.get $0 + local.get $2 i32.const 2 i32.add - local.set $0 + local.set $2 br $while-continue|2 end end @@ -4329,37 +4203,37 @@ i32.load i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 return end i32.const 4240 - local.set $5 + local.set $2 i32.const 4240 i32.load16_u - local.set $0 + local.set $1 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $0 + local.get $1 i32.const 128 i32.or i32.const 160 i32.eq - local.get $0 + local.get $1 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $0 + local.get $1 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $0 + local.get $1 i32.const -8192 i32.add i32.const 10 @@ -4368,31 +4242,31 @@ drop block $break|0 block $case6|0 - local.get $0 + local.get $1 i32.const 5760 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8232 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8233 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8239 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8287 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 12288 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 65279 i32.eq br_if $case6|0 @@ -4404,34 +4278,33 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|0 end end i32.const 1 - local.set $2 - i32.const 1 - local.get $0 + local.set $3 + local.get $1 i32.const 43 i32.eq - local.get $0 + local.get $1 i32.const 45 i32.eq - select - if - local.get $1 + i32.or + if (result i32) + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -4439,80 +4312,79 @@ end i32.const -1 i32.const 1 - local.get $0 + local.get $1 i32.const 45 i32.eq select - local.set $2 - local.get $5 + local.set $3 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 + else + local.get $1 end - local.get $1 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $0 i32.const 48 i32.eq - select + local.get $0 + i32.const 2 + i32.gt_s + i32.and if block $break|1 block $case2|1 block $case1|1 - local.get $5 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $0 + local.tee $1 i32.const 98 i32.ne if - local.get $0 + local.get $1 i32.const 111 i32.eq br_if $case1|1 - local.get $0 + local.get $1 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 2 local.set $4 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 8 local.set $4 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 16 local.set $4 end @@ -4524,40 +4396,40 @@ local.set $4 loop $while-continue|2 block $while-break|2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 if - local.get $5 + local.get $2 i32.load16_u - local.tee $0 + local.tee $1 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 48 i32.sub else - local.get $0 + local.get $1 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $0 + local.get $1 i32.const 55 i32.sub else - local.get $0 + local.get $1 i32.const 87 i32.sub - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 97 i32.sub i32.const 25 @@ -4565,11 +4437,11 @@ select end end - local.tee $0 + local.tee $1 local.get $4 i32.ge_u if - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -4577,66 +4449,66 @@ end br $while-break|2 end - local.get $0 - local.get $3 + local.get $1 local.get $4 + local.get $5 i32.mul i32.add - local.set $3 - local.get $5 + local.set $5 + local.get $2 i32.const 2 i32.add - local.set $5 + local.set $2 br $while-continue|2 end end end - local.get $2 local.get $3 + local.get $5 i32.mul ) (func $~lib/util/string/strtol (result i64) (local $0 i32) (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) i32.const 4284 i32.load i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz if i64.const 0 return end i32.const 4288 - local.set $5 + local.set $2 i32.const 4288 i32.load16_u - local.set $0 + local.set $1 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $0 + local.get $1 i32.const 128 i32.or i32.const 160 i32.eq - local.get $0 + local.get $1 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $0 + local.get $1 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $0 + local.get $1 i32.const -8192 i32.add i32.const 10 @@ -4645,31 +4517,31 @@ drop block $break|0 block $case6|0 - local.get $0 + local.get $1 i32.const 5760 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8232 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8233 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8239 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8287 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 12288 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 65279 i32.eq br_if $case6|0 @@ -4681,34 +4553,33 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|0 end end i64.const 1 - local.set $2 - i32.const 1 - local.get $0 + local.set $5 + local.get $1 i32.const 43 i32.eq - local.get $0 + local.get $1 i32.const 45 i32.eq - select - if - local.get $1 + i32.or + if (result i32) + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.eqz if i64.const 0 @@ -4716,125 +4587,124 @@ end i64.const -1 i64.const 1 - local.get $0 + local.get $1 i32.const 45 i32.eq select - local.set $2 - local.get $5 + local.set $5 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 + else + local.get $1 end - local.get $1 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $0 i32.const 48 i32.eq - select + local.get $0 + i32.const 2 + i32.gt_s + i32.and if block $break|1 block $case2|1 block $case1|1 - local.get $5 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $0 + local.tee $1 i32.const 98 i32.ne if - local.get $0 + local.get $1 i32.const 111 i32.eq br_if $case1|1 - local.get $0 + local.get $1 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 2 - local.set $4 + local.set $3 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 8 - local.set $4 + local.set $3 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 16 - local.set $4 + local.set $3 end end - local.get $4 + local.get $3 i32.const 10 - local.get $4 + local.get $3 select - local.set $4 + local.set $3 loop $while-continue|2 block $while-break|2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 if - local.get $5 + local.get $2 i32.load16_u - local.tee $0 + local.tee $1 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 48 i32.sub else - local.get $0 + local.get $1 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $0 + local.get $1 i32.const 55 i32.sub else - local.get $0 + local.get $1 i32.const 87 i32.sub - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 97 i32.sub i32.const 25 @@ -4842,11 +4712,11 @@ select end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $3 i32.ge_u if - local.get $3 + local.get $4 i64.eqz if i64.const 0 @@ -4854,24 +4724,24 @@ end br $while-break|2 end - local.get $0 + local.get $1 i64.extend_i32_u - local.get $4 - i64.extend_i32_s local.get $3 + i64.extend_i32_s + local.get $4 i64.mul i64.add - local.set $3 - local.get $5 + local.set $4 + local.get $2 i32.const 2 i32.add - local.set $5 + local.set $2 br $while-continue|2 end end end - local.get $2 - local.get $3 + local.get $4 + local.get $5 i64.mul ) (func $~lib/math/ipow32 (param $0 i32) (result i32) @@ -5114,11 +4984,11 @@ (local $6 i64) (local $7 i32) (local $8 i64) - (local $9 i64) - (local $10 i64) + (local $9 i32) + (local $10 f64) (local $11 f64) - (local $12 f64) - (local $13 i32) + (local $12 i64) + (local $13 i64) (local $14 i64) block $folding-inner0 local.get $0 @@ -5134,7 +5004,7 @@ i32.load16_u local.set $5 f64.const 1 - local.set $12 + local.set $11 loop $while-continue|0 local.get $7 if (result i32) @@ -5231,7 +5101,7 @@ i32.eqz br_if $folding-inner0 f64.const -1 - local.set $12 + local.set $11 local.get $0 i32.const 2 i32.add @@ -5260,11 +5130,10 @@ local.tee $5 i32.const 73 i32.eq - i32.const 0 local.get $7 i32.const 8 i32.ge_s - select + i32.and if local.get $0 i64.load @@ -5279,7 +5148,7 @@ i32.const 0 end if - local.get $12 + local.get $11 f64.const inf f64.mul return @@ -5287,18 +5156,17 @@ br $folding-inner0 end local.get $5 + i32.const 46 + i32.ne + local.get $5 i32.const 48 i32.sub i32.const 10 i32.ge_u - i32.const 0 - local.get $5 - i32.const 46 - i32.ne - select + i32.and br_if $folding-inner0 local.get $0 - local.set $2 + local.set $4 loop $while-continue|1 local.get $5 i32.const 48 @@ -5329,15 +5197,15 @@ i32.eq if local.get $0 - local.get $2 + local.get $4 i32.eq - local.set $2 + local.set $4 local.get $0 i32.const 2 i32.add local.set $0 i32.const 0 - local.get $2 + local.get $4 local.get $7 i32.const 1 i32.sub @@ -5345,7 +5213,7 @@ select br_if $folding-inner0 i32.const 1 - local.set $13 + local.set $9 loop $for-loop|2 local.get $0 i32.load16_u @@ -5357,10 +5225,10 @@ i32.const 1 i32.sub local.set $7 - local.get $3 + local.get $2 i32.const 1 i32.sub - local.set $3 + local.set $2 local.get $0 i32.const 2 i32.add @@ -5382,8 +5250,8 @@ i32.ge_u i32.const 0 i32.const 0 + local.get $4 local.get $2 - local.get $3 select select br_if $folding-inner0 @@ -5391,23 +5259,21 @@ local.get $5 i32.const 48 i32.sub - local.set $2 + local.set $4 loop $for-loop|3 - i32.const 0 - local.get $13 - i32.const 1 + local.get $9 + i32.eqz local.get $5 i32.const 46 i32.eq - select - local.get $2 + i32.and + local.get $4 i32.const 10 i32.lt_u - select - i32.eqz + i32.or if block $for-break3 - local.get $2 + local.get $4 i32.const 10 i32.lt_u if @@ -5415,14 +5281,14 @@ i32.const 19 i32.lt_s if (result i64) - local.get $2 + local.get $4 i64.extend_i32_u local.get $6 i64.const 10 i64.mul i64.add else - local.get $2 + local.get $4 i32.eqz i32.eqz i64.extend_i32_u @@ -5436,9 +5302,9 @@ local.set $1 else local.get $1 - local.set $3 + local.set $2 i32.const 1 - local.set $13 + local.set $9 end local.get $7 i32.const 1 @@ -5454,17 +5320,15 @@ local.tee $5 i32.const 48 i32.sub - local.set $2 + local.set $4 br $for-loop|3 end end end block $~lib/util/string/scientific|inlined.0 (result f64) - f64.const 0 - i32.const 1 - local.get $3 + local.get $2 local.get $1 - local.get $13 + local.get $9 select i32.const 19 local.get $1 @@ -5473,6 +5337,10 @@ i32.gt_s select i32.sub + local.set $5 + f64.const 0 + local.get $6 + i64.eqz block $~lib/util/string/parseExp|inlined.0 (result i32) i32.const 1 local.set $1 @@ -5489,7 +5357,7 @@ local.get $7 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5498,15 +5366,15 @@ i32.add local.tee $0 i32.load16_u - local.tee $3 + local.tee $2 i32.const 45 i32.eq if (result i32) i32.const 0 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5518,15 +5386,15 @@ local.tee $0 i32.load16_u else - local.get $3 + local.get $2 i32.const 43 i32.eq if (result i32) i32.const 0 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5536,20 +5404,20 @@ local.tee $0 i32.load16_u else - local.get $3 + local.get $2 end end - local.set $3 + local.set $2 loop $while-continue|4 - local.get $3 + local.get $2 i32.const 48 i32.eq if i32.const 0 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5558,40 +5426,40 @@ i32.add local.tee $0 i32.load16_u - local.set $3 + local.set $2 br $while-continue|4 end end - local.get $3 + local.get $2 i32.const 48 i32.sub - local.set $3 + local.set $2 loop $for-loop|5 - local.get $3 + local.get $2 i32.const 10 i32.lt_u i32.const 0 - local.get $2 + local.get $4 select if local.get $1 i32.const 3200 i32.mul - local.get $4 + local.get $3 i32.const 3200 i32.ge_s br_if $~lib/util/string/parseExp|inlined.0 drop + local.get $2 local.get $3 - local.get $4 i32.const 10 i32.mul i32.add - local.set $4 - local.get $2 + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $2 + local.set $4 local.get $0 i32.const 2 i32.add @@ -5599,21 +5467,20 @@ i32.load16_u i32.const 48 i32.sub - local.set $3 + local.set $2 br $for-loop|5 end end local.get $1 - local.get $4 + local.get $3 i32.mul end + local.get $5 i32.add local.tee $0 i32.const -342 i32.lt_s - local.get $6 - i64.eqz - select + i32.or br_if $~lib/util/string/scientific|inlined.0 drop f64.const inf @@ -5624,7 +5491,7 @@ drop local.get $6 f64.convert_i64_u - local.tee $11 + local.tee $10 local.get $0 i32.eqz br_if $~lib/util/string/scientific|inlined.0 @@ -5632,13 +5499,12 @@ local.get $0 i32.const 37 i32.le_s - i32.const 0 local.get $0 i32.const 22 i32.gt_s - select + i32.and if - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.shl @@ -5646,7 +5512,7 @@ i32.add f64.load f64.mul - local.set $11 + local.set $10 i32.const 22 local.set $0 end @@ -5654,13 +5520,13 @@ i64.const 9007199254740991 i64.le_u if (result i32) - local.get $0 local.get $0 i32.const 31 i32.shr_s - local.tee $5 + local.tee $1 + local.get $0 + local.get $1 i32.add - local.get $5 i32.xor i32.const 22 i32.le_s @@ -5672,7 +5538,7 @@ i32.const 0 i32.gt_s if - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.shl @@ -5682,7 +5548,7 @@ f64.mul br $~lib/util/string/scientific|inlined.0 end - local.get $11 + local.get $10 i32.const 0 local.get $0 i32.sub @@ -5722,7 +5588,7 @@ i64.div_u local.tee $6 i64.clz - local.tee $9 + local.tee $12 i64.const 18 i64.sub i64.shl @@ -5732,12 +5598,12 @@ f64.nearest i64.trunc_f64_u local.get $6 - local.get $9 + local.get $12 i64.shl i64.add local.set $6 local.get $8 - local.get $9 + local.get $12 i64.sub local.set $8 local.get $1 @@ -5753,32 +5619,32 @@ i32.sub call $~lib/math/ipow32 i64.extend_i32_s - local.tee $10 + local.tee $13 i64.div_u local.tee $14 i64.clz - local.set $9 + local.set $12 local.get $6 - local.get $10 + local.get $13 i64.rem_u f64.convert_i64_u i64.reinterpret_f64 - local.get $9 + local.get $12 i64.const 52 i64.shl i64.add f64.reinterpret_i64 - local.get $10 + local.get $13 f64.convert_i64_u f64.div i64.trunc_f64_u local.get $14 - local.get $9 + local.get $12 i64.shl i64.add f64.convert_i64_u local.get $8 - local.get $9 + local.get $12 i64.sub i32.wrap_i64 call $~lib/math/NativeMath.scalbn @@ -5790,13 +5656,13 @@ i64.shr_u local.set $6 local.get $0 - local.tee $4 + local.tee $3 i64.extend_i32_s local.get $8 i64.add global.set $~lib/util/string/__fixmulShift loop $for-loop|7 - local.get $4 + local.get $3 i32.const 13 i32.ge_s if @@ -5815,88 +5681,88 @@ i64.const 32 i64.shr_u i64.add - local.tee $9 + local.tee $8 i64.const 32 i64.shr_u i32.wrap_i64 i32.clz i64.extend_i32_u - local.tee $8 + local.tee $12 i64.sub - local.tee $10 + local.tee $13 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift local.get $6 - local.get $8 + local.get $12 i64.shl i64.const 31 i64.shr_u i64.const 1 i64.and - local.get $9 local.get $8 + local.get $12 i64.shl local.get $6 i64.const 4294967295 i64.and - local.get $10 + local.get $13 i64.shr_u i64.or i64.add local.set $6 - local.get $4 + local.get $3 i32.const 13 i32.sub - local.set $4 + local.set $3 br $for-loop|7 end end - local.get $4 + local.get $3 call $~lib/math/ipow32 i64.extend_i32_u - local.tee $9 + local.tee $8 local.get $6 i64.const 4294967295 i64.and i64.mul - local.set $8 + local.set $12 i64.const 32 - local.get $9 + local.get $8 local.get $6 i64.const 32 i64.shr_u i64.mul - local.get $8 + local.get $12 i64.const 32 i64.shr_u i64.add - local.tee $9 + local.tee $6 i64.const 32 i64.shr_u i32.wrap_i64 i32.clz i64.extend_i32_u - local.tee $6 + local.tee $8 i64.sub - local.tee $10 + local.tee $13 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift + local.get $12 local.get $8 - local.get $6 i64.shl i64.const 31 i64.shr_u i64.const 1 i64.and - local.get $9 local.get $6 - i64.shl local.get $8 + i64.shl + local.get $12 i64.const 4294967295 i64.and - local.get $10 + local.get $13 i64.shr_u i64.or i64.add @@ -5907,7 +5773,7 @@ end end end - local.get $12 + local.get $11 f64.copysign return end @@ -6008,14 +5874,14 @@ local.get $2 local.get $3 i32.gt_s - local.tee $1 + local.tee $0 select call $~lib/util/string/compareImpl - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s - local.get $1 local.get $0 + local.get $1 select ) (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) @@ -6024,7 +5890,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -6033,28 +5899,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (local $2 i32) @@ -6063,21 +5929,23 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 + local.tee $2 i32.load offset=12 - local.tee $5 + local.tee $3 i32.const 1 i32.add - local.tee $6 - local.tee $2 - local.get $0 - i32.load offset=8 local.tee $4 + local.tee $7 + local.get $2 + i32.load offset=8 + local.tee $5 i32.const 2 i32.shr_u i32.gt_u if - local.get $2 + local.get $7 i32.const 268435455 i32.gt_u if @@ -6088,74 +5956,80 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load - local.tee $7 - local.get $4 + local.tee $6 + local.get $5 i32.const 1 i32.shl - local.tee $3 + local.tee $8 i32.const 1073741820 - local.get $3 + local.get $8 i32.const 1073741820 i32.lt_u select - local.tee $3 - local.get $2 + local.tee $8 + local.get $7 i32.const 8 - local.get $2 + local.get $7 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $2 - local.get $2 - local.get $3 + local.tee $7 + local.get $7 + local.get $8 i32.lt_u select - local.tee $2 + local.tee $7 call $~lib/rt/itcms/__renew - local.tee $3 - local.get $4 + local.tee $8 + local.get $5 i32.add - local.get $2 - local.get $4 + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill - local.get $3 - local.get $7 + local.get $6 + local.get $8 i32.ne if - local.get $0 - local.get $3 + local.get $2 + local.get $8 i32.store - local.get $0 - local.get $3 + local.get $2 + local.get $8 i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $8 + if + local.get $2 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - local.get $0 local.get $2 + local.get $7 i32.store offset=8 end local.get $0 i32.load offset=4 - local.get $5 + local.get $3 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 + if + local.get $2 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $6 + local.get $4 i32.store offset=12 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -6288,7 +6162,7 @@ local.get $1 local.get $5 i64.div_u - local.tee $4 + local.tee $1 i64.mul i64.sub i32.wrap_i64 @@ -6298,8 +6172,7 @@ i32.add i32.load16_u i32.store16 - local.get $4 - local.tee $1 + local.get $1 i64.const 0 i64.ne br_if $do-loop|1 @@ -6465,8 +6338,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -6689,22 +6561,20 @@ i32.shl i32.const 22862 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -6718,7 +6588,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -6734,7 +6604,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -6814,22 +6684,20 @@ i32.shl i32.const 22862 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -6843,7 +6711,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -6859,16 +6727,13 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 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 $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -6887,18 +6752,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -6915,27 +6779,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -6957,19 +6820,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -6986,7 +6848,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -7004,7 +6866,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -7015,24 +6877,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -7078,20 +6939,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -7114,20 +6972,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -7135,63 +6992,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -7208,22 +7062,21 @@ (local $1 i64) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) - (local $15 i64) local.get $0 f64.const 0 f64.lt - local.tee $5 + local.tee $2 if (result f64) i32.const 22864 i32.const 45 @@ -7240,19 +7093,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 1 - local.get $2 + local.get $6 select i32.const 1075 i32.sub - local.tee $9 + local.tee $7 i32.const 1 i32.sub local.get $1 i64.const 4503599627370495 i64.and - local.get $2 + local.get $6 i32.const 0 i32.ne i64.extend_i32_u @@ -7267,11 +7120,11 @@ local.tee $3 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i32.sub - local.set $2 + local.set $8 local.get $3 - local.get $4 + local.get $6 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -7281,25 +7134,25 @@ i64.eq i32.const 1 i32.add - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 - local.get $4 + local.get $7 + local.get $6 i32.sub - local.get $2 + local.get $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $8 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $6 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -7308,9 +7161,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $7 local.get $0 - local.get $2 + local.get $7 f64.convert_i32_s f64.ne i32.add @@ -7318,18 +7171,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $7 i32.const 3 i32.shl - local.tee $4 + local.tee $8 i32.sub global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 22920 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $7 i32.const 1 i32.shl i32.const 23616 @@ -7347,77 +7200,77 @@ local.get $1 i64.const 32 i64.shr_u - local.tee $10 + local.tee $9 global.get $~lib/util/number/_frc_pow - local.tee $13 + local.tee $10 i64.const 4294967295 i64.and + local.tee $11 local.tee $1 - local.tee $6 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul i64.const 32 i64.shr_u i64.add - local.set $6 + local.set $4 global.get $~lib/util/number/_frc_plus - local.tee $7 + local.tee $1 i64.const 4294967295 i64.and - local.set $11 - local.get $7 + local.set $12 + local.get $1 i64.const 32 i64.shr_u - local.tee $14 - local.get $1 + local.tee $1 + local.get $11 i64.mul - local.get $1 local.get $11 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $7 + local.set $5 global.get $~lib/util/number/_frc_minus - local.tee $8 + local.tee $13 i64.const 4294967295 i64.and - local.set $12 - local.get $8 + local.set $14 + local.get $13 i64.const 32 i64.shr_u - local.tee $15 - local.get $1 + local.tee $13 + local.get $11 i64.mul - local.get $1 - local.get $12 + local.get $11 + local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $8 - local.get $5 + local.set $11 + local.get $2 i32.const 1 i32.shl i32.const 22864 i32.add + local.get $9 local.get $10 - local.get $13 i64.const 32 i64.shr_u - local.tee $1 + local.tee $9 local.tee $10 i64.mul - local.get $6 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $3 local.get $10 i64.mul - local.get $6 + local.get $4 i64.const 4294967295 i64.and i64.add @@ -7427,16 +7280,16 @@ i64.shr_u i64.add local.get $1 - local.get $14 + local.get $9 i64.mul - local.get $7 + local.get $5 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $11 + local.get $9 + local.get $12 i64.mul - local.get $7 + local.get $5 i64.const 4294967295 i64.and i64.add @@ -7447,24 +7300,24 @@ i64.add i64.const 1 i64.sub - local.tee $3 + local.tee $1 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $6 i32.add i32.const -64 i32.sub - local.get $3 local.get $1 - local.get $15 + local.get $9 + local.get $13 i64.mul - local.get $8 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $12 + local.get $9 + local.get $14 i64.mul - local.get $8 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -7476,13 +7329,13 @@ i64.const 1 i64.add i64.sub - local.get $5 + local.get $2 call $~lib/util/number/genDigits - local.get $5 + local.get $2 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $5 + local.get $2 i32.add ) (func $std/string/getString (result i32) @@ -7492,71 +7345,67 @@ (local $1 i32) (local $2 i32) (local $3 i32) - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.load - local.tee $0 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - local.get $1 - i32.load - call $~lib/rt/itcms/__visit - return + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start call $start:std/string @@ -7570,302 +7419,315 @@ (local $8 i32) (local $9 i32) (local $10 i32) - block $folding-inner4 - 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 25884 - i32.lt_s - if - i32.const 42288 - i32.const 42336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 - i64.const 0 - i64.store offset=16 - block $folding-inner3 - block $folding-inner1 - block $folding-inner0 - local.get $2 - i32.eqz - br_if $folding-inner0 + 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 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i64.const 0 + i64.store offset=8 + local.get $6 + i64.const 0 + i64.store offset=16 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + br_if $folding-inner0 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.eqz + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $0 + i32.store + local.get $0 if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.load offset=4 - local.get $0 - i32.store local.get $1 local.get $0 i32.const 1 - call $~lib/rt/itcms/__link - br $folding-inner3 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $8 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + if + local.get $8 + i32.eqz if - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1712 - i32.store - br $folding-inner1 - end - else - local.get $3 - i32.eqz - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 - local.get $3 - local.get $7 - i32.lt_s - select - local.tee $4 + i32.const 1 i32.const 4 i32.const 0 call $~lib/rt/__newArray - local.tee $1 - i32.store - local.get $1 + local.tee $0 + i32.store offset=4 + local.get $0 i32.load offset=4 - local.set $3 - loop $for-loop|0 - local.get $4 - local.get $5 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - local.get $2 - local.get $5 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.load16_u - i32.store16 - local.get $5 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - br $folding-inner3 + i32.const 1712 + i32.store + br $folding-inner1 end + else + local.get $8 + i32.eqz + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $8 + local.get $2 + local.get $2 + local.get $8 + i32.gt_s + select + local.tee $1 i32.const 4 i32.const 0 call $~lib/rt/__newArray local.tee $2 - i32.store offset=12 - loop $while-continue|1 - local.get $0 + i32.store + local.get $2 + i32.load offset=4 + local.set $4 + loop $for-loop|0 local.get $1 - local.get $4 - call $~lib/string/String#indexOf - local.tee $5 - i32.const -1 - i32.xor + local.get $3 + i32.gt_s if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 local.get $5 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + i32.store16 + local.get $3 + i32.const 2 + i32.shl local.get $4 - i32.sub - local.tee $6 - i32.const 0 - i32.gt_s + i32.add + local.get $5 + i32.store + local.get $5 if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - local.tee $9 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=16 - local.get $6 - local.get $4 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $9 - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=20 local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push + local.get $5 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $3 i32.const 1 i32.add - local.tee $10 - local.get $7 - i32.eq - br_if $folding-inner4 - local.get $5 - local.get $8 - i32.add - local.set $4 - br $while-continue|1 + local.set $3 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=12 + loop $while-continue|1 + local.get $0 + local.get $1 local.get $4 - i32.eqz - if - local.get $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner4 - end - local.get $3 - local.get $4 - i32.sub - local.tee $1 - i32.const 0 - i32.gt_s + call $~lib/string/String#indexOf + local.tee $6 + i32.const -1 + i32.xor if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 + local.get $6 local.get $4 + 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 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=16 + local.get $7 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $10 + call $~lib/memory/memory.copy + local.get $3 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=20 + local.get $3 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + local.get $2 + local.get $5 i32.const 1 - i32.shl - local.get $0 i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=20 - local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push + local.tee $5 + i32.eq + br_if $folding-inner2 + local.get $6 + local.get $9 + i32.add + local.set $4 + br $while-continue|1 end - br $folding-inner4 end + local.get $4 + i32.eqz + if + local.get $3 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner2 + end + local.get $8 + local.get $4 + i32.sub + local.tee $1 i32.const 0 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.set $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + call $~lib/memory/memory.copy + local.get $3 + local.get $2 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=20 + local.get $3 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + i32.const 0 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.set $0 end global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 return end global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $start:std/string (local $0 i32) - (local $1 i32) - (local $2 f64) + (local $1 f64) + (local $2 f32) (local $3 i32) (local $4 i32) - (local $5 f32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 44 i32.sub @@ -8016,12 +7878,11 @@ end global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $0 i32.store - i32.const -1 - local.set $0 - block $__inlined_func$~lib/string/String#codePointAt - local.get $1 + block $__inlined_func$~lib/string/String#codePointAt (result i32) + i32.const -1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -8031,37 +7892,40 @@ i32.const 1 i32.le_u br_if $__inlined_func$~lib/string/String#codePointAt - i32.const 1 + drop local.get $3 i32.const 2 i32.eq - local.get $1 + local.get $0 i32.load16_u offset=2 - local.tee $0 + local.tee $3 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt - local.get $1 + i32.or + if + local.get $3 + br $__inlined_func$~lib/string/String#codePointAt + end + local.get $3 + local.get $0 i32.load16_u offset=4 - local.tee $1 + local.tee $0 i32.const 64512 i32.and i32.const 56320 i32.ne br_if $__inlined_func$~lib/string/String#codePointAt - local.get $1 + drop local.get $0 + local.get $3 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $0 end - local.get $0 i32.const 105 i32.ne if @@ -8117,17 +7981,17 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 - local.get $1 + local.get $3 i32.const 15 call $~lib/string/String#charAt - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8151,14 +8015,14 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $3 + local.tee $4 i32.store offset=12 - local.get $1 local.get $3 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -8167,12 +8031,12 @@ i32.const 1 i32.sub call $~lib/string/String#charAt - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8184,16 +8048,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store offset=8 - local.get $1 local.get $0 + local.get $3 i32.store offset=12 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -8273,10 +8137,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1776 i32.store offset=4 local.get $0 @@ -8297,10 +8161,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1840 i32.store offset=4 local.get $0 @@ -8321,10 +8185,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1872 i32.store offset=4 local.get $0 @@ -8345,10 +8209,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1872 i32.store offset=4 local.get $0 @@ -8368,10 +8232,10 @@ call $~lib/string/String.fromCharCode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1904 i32.store offset=4 local.get $0 @@ -8477,10 +8341,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1776 i32.store offset=4 local.get $0 @@ -8499,10 +8363,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1872 i32.store offset=4 local.get $0 @@ -8521,10 +8385,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 2144 i32.store offset=4 local.get $0 @@ -8540,41 +8404,47 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store - local.get $1 + local.get $0 i32.const 2176 i32.store offset=4 - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $3 - select - local.tee $4 - i32.const 2172 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.add - local.get $3 - i32.gt_s - if (result i32) + block $__inlined_func$~lib/string/String#startsWith (result i32) + i32.const 0 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - else + i32.shr_u + local.tee $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $4 + i32.const 0 local.get $0 local.get $4 + i32.const 2172 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.add + i32.lt_s + br_if $__inlined_func$~lib/string/String#startsWith + drop + local.get $3 + local.get $4 i32.const 2176 - local.get $1 + local.get $0 call $~lib/util/string/compareImpl + i32.eqz end + i32.eqz if i32.const 0 i32.const 1120 @@ -8584,41 +8454,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store - local.get $1 + local.get $0 i32.const 2208 i32.store offset=4 i32.const 536870910 - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 536870910 - i32.gt_u + i32.gt_s select i32.const 2204 i32.load i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.sub - local.tee $3 + local.tee $4 i32.const 0 i32.lt_s if (result i32) i32.const 1 else - local.get $0 local.get $3 + local.get $4 i32.const 2208 - local.get $1 + local.get $0 call $~lib/util/string/compareImpl end if @@ -8632,12 +8502,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2240 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2240 i32.const 0 call $~lib/string/String#indexOf @@ -8654,12 +8524,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const 2272 call $~lib/string/String#padStart @@ -8669,10 +8539,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8686,12 +8556,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 15 i32.const 2272 call $~lib/string/String#padStart @@ -8701,10 +8571,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8898,12 +8768,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const 2272 call $~lib/string/String#padEnd @@ -8913,10 +8783,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8930,12 +8800,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 15 i32.const 2272 call $~lib/string/String#padEnd @@ -8945,10 +8815,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -9199,15 +9069,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store - local.get $1 local.get $0 + local.get $3 i32.store offset=4 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 0 call $~lib/string/String#indexOf if @@ -9221,12 +9091,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 i32.const 0 call $~lib/string/String#indexOf @@ -9241,12 +9111,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 0 call $~lib/string/String#indexOf @@ -9263,12 +9133,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2656 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2656 i32.const 0 call $~lib/string/String#indexOf @@ -9285,12 +9155,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 2 call $~lib/string/String#indexOf @@ -9307,12 +9177,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 3 call $~lib/string/String#indexOf @@ -9329,12 +9199,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2688 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2688 i32.const -1 call $~lib/string/String#indexOf @@ -9391,21 +9261,21 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 i32.const 2147483647 call $~lib/string/String#lastIndexOf local.set $0 global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -9424,12 +9294,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -9446,12 +9316,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2656 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2656 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -9468,12 +9338,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2720 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2720 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -9490,12 +9360,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 2 call $~lib/string/String#lastIndexOf @@ -9512,12 +9382,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 3 call $~lib/string/String#lastIndexOf @@ -9534,12 +9404,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2688 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2688 i32.const -1 call $~lib/string/String#lastIndexOf @@ -9556,12 +9426,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2752 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2752 i32.const 0 call $~lib/string/String#lastIndexOf @@ -9578,12 +9448,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2176 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2176 i32.const 0 call $~lib/string/String#lastIndexOf @@ -10335,14 +10205,14 @@ i32.const 3664 i32.const 0 call $~lib/util/string/strtol - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 3712 i32.store i32.const 3712 i32.const 16 call $~lib/util/string/strtol - local.get $2 + local.get $1 f64.ne if i32.const 0 @@ -10486,8 +10356,8 @@ i32.const 1712 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10503,8 +10373,8 @@ i32.const 4112 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10520,8 +10390,8 @@ i32.const 4144 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10537,8 +10407,8 @@ i32.const 2400 i32.const 37 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10554,8 +10424,8 @@ i32.const 4176 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10571,8 +10441,8 @@ i32.const 4208 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10589,8 +10459,8 @@ i32.const 0 call $~lib/util/string/strtol f32.demote_f64 - local.tee $5 - local.get $5 + local.tee $2 + local.get $2 f32.eq if i32.const 0 @@ -10606,8 +10476,8 @@ i32.const 4208 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10935,8 +10805,8 @@ i32.store i32.const 1712 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11760,9 +11630,9 @@ i32.const 4144 i32.store i32.const 4144 - call $~lib/util/string/strtod - local.tee $2 - local.get $2 + call $~lib/util/string/strtod + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11777,8 +11647,8 @@ i32.store i32.const 4112 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11793,8 +11663,8 @@ i32.store i32.const 7056 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11809,8 +11679,8 @@ i32.store i32.const 7088 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11825,8 +11695,8 @@ i32.store i32.const 7120 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11841,8 +11711,8 @@ i32.store i32.const 7152 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11857,8 +11727,8 @@ i32.store i32.const 7184 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11873,8 +11743,8 @@ i32.store i32.const 7216 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11889,8 +11759,8 @@ i32.store i32.const 7248 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11905,8 +11775,8 @@ i32.store i32.const 7280 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11921,8 +11791,8 @@ i32.store i32.const 7312 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11937,8 +11807,8 @@ i32.store i32.const 7344 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11953,8 +11823,8 @@ i32.store i32.const 7376 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11969,8 +11839,8 @@ i32.store i32.const 7408 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11985,8 +11855,8 @@ i32.store i32.const 7440 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12001,8 +11871,8 @@ i32.store i32.const 7472 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12392,8 +12262,8 @@ i32.store i32.const 8688 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12408,8 +12278,8 @@ i32.store i32.const 8720 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12424,8 +12294,8 @@ i32.store i32.const 8768 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12901,8 +12771,8 @@ i32.store i32.const 12880 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -13838,18 +13708,18 @@ global.get $~lib/memory/__stack_pointer i32.const 55296 call $~lib/string/String.fromCodePoint - local.set $0 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store i32.const 56322 call $~lib/string/String.fromCodePoint - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 + local.get $5 local.get $0 - local.get $1 call $~lib/string/String#concat local.tee $0 i32.store offset=40 @@ -16112,10 +15982,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1712 i32.store offset=4 local.get $0 @@ -16181,10 +16051,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1712 i32.store offset=4 local.get $0 @@ -16226,10 +16096,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 15424 i32.store offset=4 local.get $0 @@ -16269,15 +16139,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16287,15 +16157,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16307,10 +16177,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16350,15 +16220,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16368,15 +16238,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16388,10 +16258,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16431,15 +16301,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16449,15 +16319,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16467,15 +16337,15 @@ local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 call $~lib/string/String.__eq else @@ -16487,10 +16357,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16530,15 +16400,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 call $~lib/string/String.__eq else @@ -16548,15 +16418,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16566,15 +16436,15 @@ local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16586,10 +16456,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16629,15 +16499,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16647,15 +16517,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16665,15 +16535,15 @@ local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 14048 i32.store offset=4 - local.get $1 + local.get $3 i32.const 14048 call $~lib/string/String.__eq else @@ -16685,10 +16555,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1712 i32.store offset=4 local.get $0 @@ -16728,15 +16598,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16746,15 +16616,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16766,10 +16636,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16835,10 +16705,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1808 i32.store offset=4 local.get $0 @@ -16880,10 +16750,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1808 i32.store offset=4 local.get $0 @@ -16923,15 +16793,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16941,15 +16811,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16961,10 +16831,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17004,15 +16874,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -17022,15 +16892,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -17042,10 +16912,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17085,15 +16955,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -17103,15 +16973,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -17123,10 +16993,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17149,10 +17019,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -17172,10 +17042,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -17195,10 +17065,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17376 i32.store offset=4 local.get $0 @@ -17218,10 +17088,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17408 i32.store offset=4 local.get $0 @@ -17241,10 +17111,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 2400 i32.store offset=4 local.get $0 @@ -17264,10 +17134,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17440 i32.store offset=4 local.get $0 @@ -17287,10 +17157,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13584 i32.store offset=4 local.get $0 @@ -17310,10 +17180,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17472 i32.store offset=4 local.get $0 @@ -17333,10 +17203,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17504 i32.store offset=4 local.get $0 @@ -17356,10 +17226,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17536 i32.store offset=4 local.get $0 @@ -17379,10 +17249,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17584 i32.store offset=4 local.get $0 @@ -17402,10 +17272,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17632 i32.store offset=4 local.get $0 @@ -17425,10 +17295,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17680 i32.store offset=4 local.get $0 @@ -17448,10 +17318,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17728 i32.store offset=4 local.get $0 @@ -17471,10 +17341,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17776 i32.store offset=4 local.get $0 @@ -17494,10 +17364,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17824 i32.store offset=4 local.get $0 @@ -17517,10 +17387,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17872 i32.store offset=4 local.get $0 @@ -17540,10 +17410,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -17563,10 +17433,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17904 i32.store offset=4 local.get $0 @@ -17586,10 +17456,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17776 i32.store offset=4 local.get $0 @@ -17609,10 +17479,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17936 i32.store offset=4 local.get $0 @@ -17632,10 +17502,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17984 i32.store offset=4 local.get $0 @@ -17655,10 +17525,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -17678,10 +17548,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -17701,10 +17571,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17376 i32.store offset=4 local.get $0 @@ -17724,10 +17594,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17747,10 +17617,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18032 i32.store offset=4 local.get $0 @@ -17770,10 +17640,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18064 i32.store offset=4 local.get $0 @@ -17793,10 +17663,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18096 i32.store offset=4 local.get $0 @@ -17816,10 +17686,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18128 i32.store offset=4 local.get $0 @@ -17839,10 +17709,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18160 i32.store offset=4 local.get $0 @@ -17862,10 +17732,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18192 i32.store offset=4 local.get $0 @@ -17885,10 +17755,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18224 i32.store offset=4 local.get $0 @@ -17908,10 +17778,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18256 i32.store offset=4 local.get $0 @@ -17931,10 +17801,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18304 i32.store offset=4 local.get $0 @@ -17954,10 +17824,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18352 i32.store offset=4 local.get $0 @@ -17977,10 +17847,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18400 i32.store offset=4 local.get $0 @@ -18000,10 +17870,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18448 i32.store offset=4 local.get $0 @@ -18023,10 +17893,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -18046,10 +17916,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17440 i32.store offset=4 local.get $0 @@ -18069,10 +17939,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18352 i32.store offset=4 local.get $0 @@ -18092,10 +17962,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18496 i32.store offset=4 local.get $0 @@ -18115,10 +17985,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18544 i32.store offset=4 local.get $0 @@ -18138,10 +18008,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18592 i32.store offset=4 local.get $0 @@ -18161,10 +18031,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18592 i32.store offset=4 local.get $0 @@ -18184,10 +18054,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -18207,10 +18077,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -18230,10 +18100,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13488 i32.store offset=4 local.get $0 @@ -18253,10 +18123,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18640 i32.store offset=4 local.get $0 @@ -18276,10 +18146,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18672 i32.store offset=4 local.get $0 @@ -18299,10 +18169,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18704 i32.store offset=4 local.get $0 @@ -18322,10 +18192,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18736 i32.store offset=4 local.get $0 @@ -18345,10 +18215,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18768 i32.store offset=4 local.get $0 @@ -18368,10 +18238,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18816 i32.store offset=4 local.get $0 @@ -18391,10 +18261,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18896 i32.store offset=4 local.get $0 @@ -18414,10 +18284,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18992 i32.store offset=4 local.get $0 @@ -18437,10 +18307,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19088 i32.store offset=4 local.get $0 @@ -18460,10 +18330,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19184 i32.store offset=4 local.get $0 @@ -18483,10 +18353,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19280 i32.store offset=4 local.get $0 @@ -18506,10 +18376,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19328 i32.store offset=4 local.get $0 @@ -18529,10 +18399,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19392 i32.store offset=4 local.get $0 @@ -18552,10 +18422,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19456 i32.store offset=4 local.get $0 @@ -18575,10 +18445,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19504 i32.store offset=4 local.get $0 @@ -18598,10 +18468,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19552 i32.store offset=4 local.get $0 @@ -18621,10 +18491,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19600 i32.store offset=4 local.get $0 @@ -18644,10 +18514,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19648 i32.store offset=4 local.get $0 @@ -18667,10 +18537,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19696 i32.store offset=4 local.get $0 @@ -18690,10 +18560,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19744 i32.store offset=4 local.get $0 @@ -18713,10 +18583,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19792 i32.store offset=4 local.get $0 @@ -18736,10 +18606,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19840 i32.store offset=4 local.get $0 @@ -18759,10 +18629,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -18782,10 +18652,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17408 i32.store offset=4 local.get $0 @@ -18805,10 +18675,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 2400 i32.store offset=4 local.get $0 @@ -18828,10 +18698,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13584 i32.store offset=4 local.get $0 @@ -18851,10 +18721,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17472 i32.store offset=4 local.get $0 @@ -18874,10 +18744,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17504 i32.store offset=4 local.get $0 @@ -18897,10 +18767,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17584 i32.store offset=4 local.get $0 @@ -18920,10 +18790,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19888 i32.store offset=4 local.get $0 @@ -18943,10 +18813,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19936 i32.store offset=4 local.get $0 @@ -18966,10 +18836,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17984 i32.store offset=4 local.get $0 @@ -18989,10 +18859,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19984 i32.store offset=4 local.get $0 @@ -19012,10 +18882,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20032 i32.store offset=4 local.get $0 @@ -19035,10 +18905,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20080 i32.store offset=4 local.get $0 @@ -19058,10 +18928,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20128 i32.store offset=4 local.get $0 @@ -19081,10 +18951,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20176 i32.store offset=4 local.get $0 @@ -19104,10 +18974,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20224 i32.store offset=4 local.get $0 @@ -19127,10 +18997,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20288 i32.store offset=4 local.get $0 @@ -19150,10 +19020,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20352 i32.store offset=4 local.get $0 @@ -19173,10 +19043,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20416 i32.store offset=4 local.get $0 @@ -19196,10 +19066,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20480 i32.store offset=4 local.get $0 @@ -19219,10 +19089,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20544 i32.store offset=4 local.get $0 @@ -19242,10 +19112,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -19265,10 +19135,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20608 i32.store offset=4 local.get $0 @@ -19288,10 +19158,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17984 i32.store offset=4 local.get $0 @@ -19311,10 +19181,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19984 i32.store offset=4 local.get $0 @@ -19334,10 +19204,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20640 i32.store offset=4 local.get $0 @@ -19357,10 +19227,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20032 i32.store offset=4 local.get $0 @@ -19380,10 +19250,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20688 i32.store offset=4 local.get $0 @@ -19403,10 +19273,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20736 i32.store offset=4 local.get $0 @@ -19426,10 +19296,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20784 i32.store offset=4 local.get $0 @@ -19449,10 +19319,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20848 i32.store offset=4 local.get $0 @@ -19472,10 +19342,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20912 i32.store offset=4 local.get $0 @@ -19495,10 +19365,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20976 i32.store offset=4 local.get $0 @@ -19518,10 +19388,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -19541,10 +19411,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -19564,10 +19434,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -19587,10 +19457,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18064 i32.store offset=4 local.get $0 @@ -19610,10 +19480,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18160 i32.store offset=4 local.get $0 @@ -19633,10 +19503,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21040 i32.store offset=4 local.get $0 @@ -19656,10 +19526,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21088 i32.store offset=4 local.get $0 @@ -19679,10 +19549,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21136 i32.store offset=4 local.get $0 @@ -19702,10 +19572,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21184 i32.store offset=4 local.get $0 @@ -19725,10 +19595,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21232 i32.store offset=4 local.get $0 @@ -19748,10 +19618,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21280 i32.store offset=4 local.get $0 @@ -19771,10 +19641,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21344 i32.store offset=4 local.get $0 @@ -19794,10 +19664,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21408 i32.store offset=4 local.get $0 @@ -19817,10 +19687,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21472 i32.store offset=4 local.get $0 @@ -19840,10 +19710,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21536 i32.store offset=4 local.get $0 @@ -19863,10 +19733,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21600 i32.store offset=4 local.get $0 @@ -19886,10 +19756,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21600 i32.store offset=4 local.get $0 @@ -19909,10 +19779,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -19932,10 +19802,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -19955,10 +19825,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18640 i32.store offset=4 local.get $0 @@ -19978,10 +19848,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18672 i32.store offset=4 local.get $0 @@ -20001,10 +19871,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18736 i32.store offset=4 local.get $0 @@ -20024,10 +19894,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18768 i32.store offset=4 local.get $0 @@ -20047,10 +19917,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19184 i32.store offset=4 local.get $0 @@ -20070,10 +19940,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21664 i32.store offset=4 local.get $0 @@ -20093,10 +19963,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21792 i32.store offset=4 local.get $0 @@ -20116,10 +19986,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21952 i32.store offset=4 local.get $0 @@ -20139,10 +20009,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22048 i32.store offset=4 local.get $0 @@ -20162,10 +20032,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22160 i32.store offset=4 local.get $0 @@ -20185,10 +20055,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22256 i32.store offset=4 local.get $0 @@ -20208,10 +20078,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22336 i32.store offset=4 local.get $0 @@ -20231,10 +20101,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22400 i32.store offset=4 local.get $0 @@ -20254,10 +20124,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22464 i32.store offset=4 local.get $0 @@ -20277,10 +20147,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22528 i32.store offset=4 local.get $0 @@ -20300,10 +20170,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22592 i32.store offset=4 local.get $0 @@ -20323,10 +20193,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22656 i32.store offset=4 local.get $0 @@ -20346,10 +20216,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22704 i32.store offset=4 local.get $0 @@ -20369,10 +20239,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22752 i32.store offset=4 local.get $0 @@ -20391,10 +20261,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22800 i32.store offset=4 local.get $0 @@ -20413,10 +20283,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22800 i32.store offset=4 local.get $0 @@ -20435,10 +20305,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7248 i32.store offset=4 local.get $0 @@ -20457,10 +20327,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22832 i32.store offset=4 local.get $0 @@ -20479,10 +20349,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 8544 i32.store offset=4 local.get $0 @@ -20501,10 +20371,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7760 i32.store offset=4 local.get $0 @@ -20523,10 +20393,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 23856 i32.store offset=4 local.get $0 @@ -20545,10 +20415,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7824 i32.store offset=4 local.get $0 @@ -20567,10 +20437,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 23920 i32.store offset=4 local.get $0 @@ -20589,10 +20459,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24000 i32.store offset=4 local.get $0 @@ -20611,10 +20481,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24064 i32.store offset=4 local.get $0 @@ -20633,10 +20503,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24144 i32.store offset=4 local.get $0 @@ -20655,10 +20525,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24192 i32.store offset=4 local.get $0 @@ -20677,10 +20547,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24256 i32.store offset=4 local.get $0 @@ -20699,10 +20569,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24320 i32.store offset=4 local.get $0 @@ -20721,10 +20591,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7904 i32.store offset=4 local.get $0 @@ -20743,10 +20613,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24384 i32.store offset=4 local.get $0 @@ -20765,10 +20635,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 4832 i32.store offset=4 local.get $0 @@ -20787,10 +20657,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24416 i32.store offset=4 local.get $0 @@ -20809,10 +20679,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24448 i32.store offset=4 local.get $0 @@ -20831,10 +20701,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24480 i32.store offset=4 local.get $0 @@ -20853,10 +20723,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24528 i32.store offset=4 local.get $0 @@ -20875,10 +20745,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24576 i32.store offset=4 local.get $0 @@ -20897,10 +20767,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24624 i32.store offset=4 local.get $0 @@ -20919,10 +20789,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24672 i32.store offset=4 local.get $0 @@ -20941,10 +20811,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24720 i32.store offset=4 local.get $0 @@ -20963,10 +20833,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 5120 i32.store offset=4 local.get $0 @@ -20985,10 +20855,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24752 i32.store offset=4 local.get $0 @@ -21007,10 +20877,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22832 i32.store offset=4 local.get $0 @@ -21029,10 +20899,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 8544 i32.store offset=4 local.get $0 @@ -21051,10 +20921,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24800 i32.store offset=4 local.get $0 @@ -21073,10 +20943,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24832 i32.store offset=4 local.get $0 @@ -21095,10 +20965,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24880 i32.store offset=4 local.get $0 @@ -21117,10 +20987,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24912 i32.store offset=4 local.get $0 @@ -21139,10 +21009,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22800 i32.store offset=4 local.get $0 @@ -21161,10 +21031,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24960 i32.store offset=4 local.get $0 @@ -21183,10 +21053,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25008 i32.store offset=4 local.get $0 @@ -21205,10 +21075,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25072 i32.store offset=4 local.get $0 @@ -21227,10 +21097,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25136 i32.store offset=4 local.get $0 @@ -21249,10 +21119,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24384 i32.store offset=4 local.get $0 @@ -21271,10 +21141,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25200 i32.store offset=4 local.get $0 @@ -21293,10 +21163,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25232 i32.store offset=4 local.get $0 @@ -21315,10 +21185,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25296 i32.store offset=4 local.get $0 @@ -21337,10 +21207,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25376 i32.store offset=4 local.get $0 @@ -21359,10 +21229,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25424 i32.store offset=4 local.get $0 @@ -21381,10 +21251,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25472 i32.store offset=4 local.get $0 @@ -21403,10 +21273,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25520 i32.store offset=4 local.get $0 @@ -21425,10 +21295,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25568 i32.store offset=4 local.get $0 @@ -21447,10 +21317,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25616 i32.store offset=4 local.get $0 @@ -21469,10 +21339,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25664 i32.store offset=4 local.get $0 @@ -21753,7 +21623,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -21770,15 +21639,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store + local.get $3 local.get $0 i32.const 2 i32.shl local.tee $4 - local.set $6 - local.get $4 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new local.set $3 @@ -21786,10 +21655,9 @@ if local.get $3 local.get $2 - local.get $6 + local.get $5 call $~lib/memory/memory.copy end - local.get $5 local.get $3 i32.store i32.const 16 @@ -21798,10 +21666,13 @@ local.tee $1 local.get $3 i32.store - local.get $1 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 local.get $3 i32.store offset=4 @@ -21837,10 +21708,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 local.get $0 i32.load offset=12 local.tee $3 @@ -21848,32 +21719,32 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store local.get $0 i32.load offset=4 local.set $0 loop $for-loop|0 - local.get $2 + local.get $1 local.get $3 i32.lt_s if - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $2 + i32.add + local.get $1 i32.const 2 i32.shl local.get $0 i32.add i32.load i32.store16 - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -21881,7 +21752,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) (local $1 i32) @@ -21982,7 +21853,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $2 i32.const 20 i32.sub @@ -21991,7 +21861,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 + i32.eqz local.get $0 i32.const 20 i32.sub @@ -22000,14 +21871,13 @@ i32.shr_u i32.const 1 i32.shl - local.tee $5 + local.tee $4 local.get $1 i32.const 1 i32.shl - local.tee $3 + local.tee $1 i32.gt_u - select - i32.eqz + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22017,57 +21887,57 @@ return end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store - local.get $4 local.get $3 - local.get $5 + local.get $1 + local.get $4 i32.sub - local.tee $3 + local.tee $6 i32.lt_u if - local.get $4 local.get $3 + local.get $6 i32.const 2 i32.sub - local.get $4 + local.get $3 i32.div_u - local.tee $7 + local.tee $1 i32.mul - local.set $6 - local.get $1 + local.set $7 + local.get $5 local.get $2 - local.get $4 - local.get $7 - call $~lib/memory/memory.repeat + local.get $3 local.get $1 - local.get $6 + call $~lib/memory/memory.repeat + local.get $5 + local.get $7 i32.add local.get $2 - local.get $3 local.get $6 + local.get $7 i32.sub call $~lib/memory/memory.copy else - local.get $1 + local.get $5 local.get $2 - local.get $3 + local.get $6 call $~lib/memory/memory.copy end - local.get $1 - local.get $3 + local.get $5 + local.get $6 i32.add local.get $0 - local.get $5 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 ) (func $~lib/string/String#padEnd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -22092,7 +21962,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $2 i32.const 20 i32.sub @@ -22101,7 +21970,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $5 + local.tee $3 + i32.eqz local.get $0 i32.const 20 i32.sub @@ -22110,14 +21980,13 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $4 local.get $1 i32.const 1 i32.shl - local.tee $4 + local.tee $5 i32.gt_u - select - i32.eqz + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22127,53 +21996,53 @@ return end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store local.get $1 local.get $0 - local.get $3 + local.get $4 call $~lib/memory/memory.copy + local.get $3 local.get $5 local.get $4 - local.get $3 i32.sub - local.tee $0 + local.tee $5 i32.lt_u if + local.get $3 local.get $5 - local.get $0 i32.const 2 i32.sub - local.get $5 + local.get $3 i32.div_u - local.tee $6 + local.tee $0 i32.mul - local.set $4 + local.set $6 local.get $1 - local.get $3 + local.get $4 i32.add - local.tee $3 + local.tee $4 local.get $2 - local.get $5 - local.get $6 - call $~lib/memory/memory.repeat local.get $3 + local.get $0 + call $~lib/memory/memory.repeat local.get $4 + local.get $6 i32.add local.get $2 - local.get $0 - local.get $4 + local.get $5 + local.get $6 i32.sub call $~lib/memory/memory.copy else local.get $1 - local.get $3 + local.get $4 i32.add local.get $2 - local.get $0 + local.get $5 call $~lib/memory/memory.copy end global.get $~lib/memory/__stack_pointer @@ -22212,27 +22081,27 @@ i32.shr_u i32.const 1 i32.shl - local.set $3 + local.set $2 loop $while-continue|0 + local.get $1 local.get $2 - local.get $3 i32.lt_u if (result i32) block $__inlined_func$~lib/util/string/isSpace (result i32) local.get $0 - local.get $2 + local.get $1 i32.add i32.load16_u - local.tee $1 + local.tee $3 i32.const 5760 i32.lt_u if - local.get $1 + local.get $3 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $3 i32.const 9 i32.sub i32.const 4 @@ -22241,7 +22110,7 @@ br $__inlined_func$~lib/util/string/isSpace end i32.const 1 - local.get $1 + local.get $3 i32.const -8192 i32.add i32.const 10 @@ -22250,31 +22119,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $3 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 65279 i32.eq br_if $case6|0 @@ -22289,14 +22158,14 @@ i32.const 0 end if - local.get $2 + local.get $1 i32.const 2 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22306,10 +22175,10 @@ local.get $0 return end - local.get $3 local.get $2 + local.get $1 i32.sub - local.tee $1 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22320,16 +22189,16 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new local.tee $3 i32.store local.get $3 local.get $0 - local.get $2 - i32.add local.get $1 + i32.add + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22368,27 +22237,27 @@ i32.const 1 i32.shl local.tee $3 - local.set $2 + local.set $1 loop $while-continue|0 - local.get $2 + local.get $1 if (result i32) block $__inlined_func$~lib/util/string/isSpace (result i32) local.get $0 - local.get $2 + local.get $1 i32.add i32.const 2 i32.sub i32.load16_u - local.tee $1 + local.tee $2 i32.const 5760 i32.lt_u if - local.get $1 + local.get $2 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $2 i32.const 9 i32.sub i32.const 4 @@ -22397,7 +22266,7 @@ br $__inlined_func$~lib/util/string/isSpace end i32.const 1 - local.get $1 + local.get $2 i32.const -8192 i32.add i32.const 10 @@ -22406,31 +22275,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $2 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 65279 i32.eq br_if $case6|0 @@ -22445,14 +22314,14 @@ i32.const 0 end if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22462,7 +22331,7 @@ i32.const 1712 return end - local.get $2 + local.get $1 local.get $3 i32.eq if @@ -22474,20 +22343,20 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $0 local.get $2 + local.get $0 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String#trim (param $0 i32) (result i32) (local $1 i32) @@ -22518,30 +22387,30 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 1 i32.shl - local.set $2 + local.set $1 loop $while-continue|0 - local.get $2 + local.get $1 if (result i32) block $__inlined_func$~lib/util/string/isSpace (result i32) local.get $0 - local.get $2 + local.get $1 i32.add i32.const 2 i32.sub i32.load16_u - local.tee $1 + local.tee $4 i32.const 5760 i32.lt_u if - local.get $1 + local.get $4 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $4 i32.const 9 i32.sub i32.const 4 @@ -22550,7 +22419,7 @@ br $__inlined_func$~lib/util/string/isSpace end i32.const 1 - local.get $1 + local.get $4 i32.const -8192 i32.add i32.const 10 @@ -22559,31 +22428,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $4 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 65279 i32.eq br_if $case6|0 @@ -22598,33 +22467,33 @@ i32.const 0 end if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 br $while-continue|0 end end loop $while-continue|1 + local.get $1 local.get $2 - local.get $3 i32.gt_u if (result i32) block $__inlined_func$~lib/util/string/isSpace0 (result i32) local.get $0 - local.get $3 + local.get $2 i32.add i32.load16_u - local.tee $1 + local.tee $4 i32.const 5760 i32.lt_u if - local.get $1 + local.get $4 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $4 i32.const 9 i32.sub i32.const 4 @@ -22633,7 +22502,7 @@ br $__inlined_func$~lib/util/string/isSpace0 end i32.const 1 - local.get $1 + local.get $4 i32.const -8192 i32.add i32.const 10 @@ -22642,31 +22511,31 @@ drop block $break|01 block $case6|02 - local.get $1 + local.get $4 i32.const 5760 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8232 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8233 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8239 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8287 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 12288 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 65279 i32.eq br_if $case6|02 @@ -22681,18 +22550,18 @@ i32.const 0 end if - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $2 + local.set $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 br $while-continue|1 end end - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22703,12 +22572,12 @@ return end i32.const 0 - local.get $4 + local.get $3 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.eq - local.get $3 + local.get $2 select if global.get $~lib/memory/__stack_pointer @@ -22719,22 +22588,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 - local.get $0 local.get $3 - i32.add + local.get $0 local.get $2 + i32.add + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 ) (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -22766,7 +22635,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -22775,9 +22644,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22788,26 +22657,26 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -22830,27 +22699,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $1 + i32.const 0 + i32.lt_s local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $2 + local.tee $2 + i64.extend_i32_s local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 268435456 - i64.gt_u - end + i64.extend_i32_s + i64.mul + i64.const 268435456 + i64.gt_u + i32.or if i32.const 13648 i32.const 1328 @@ -22936,19 +22801,19 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.ge_u if local.get $3 local.get $4 - i32.ge_u + i32.le_u if local.get $2 local.get $0 @@ -22980,29 +22845,29 @@ i32.const 1 i32.shr_u local.tee $5 - local.get $3 local.get $4 + local.get $3 i32.sub local.tee $6 i32.add - local.tee $3 + local.tee $4 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 local.get $1 i32.const 1 i32.shl local.tee $7 call $~lib/memory/memory.copy - local.get $3 + local.get $4 local.get $7 i32.add local.get $2 @@ -23015,10 +22880,10 @@ i32.add i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 i32.add i32.const 1 i32.shl @@ -23034,7 +22899,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return end end @@ -23054,43 +22919,43 @@ (local $9 i32) (local $10 i32) (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 25884 - i32.lt_s - if - i32.const 42288 - i32.const 42336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store block $folding-inner0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 - i32.shr_u - local.tee $7 - local.get $0 + i32.shr_u + local.tee $3 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 - i32.ge_u + local.tee $8 + i32.le_u if - local.get $4 - local.get $7 + local.get $3 + local.get $8 i32.ge_u if local.get $2 @@ -23109,46 +22974,46 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $3 - local.get $7 + local.set $4 + local.get $8 i32.eqz if - local.get $3 + local.get $4 i32.eqz br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $3 local.get $4 + local.get $3 i32.const 1 i32.add i32.mul - local.get $4 + local.get $3 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $4 local.set $1 loop $for-loop|0 - local.get $4 - local.get $9 + local.get $3 + local.get $5 i32.gt_u if local.get $1 i32.const 1 i32.shl - local.get $5 + local.get $6 i32.add - local.get $9 + local.get $5 i32.const 1 i32.shl local.get $0 @@ -23161,21 +23026,21 @@ local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $6 i32.add local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $1 - local.get $3 + local.get $4 i32.add local.set $1 - local.get $9 + local.get $5 i32.const 1 i32.add - local.set $9 + local.set $5 br $for-loop|0 end end @@ -23183,47 +23048,47 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return end - local.get $3 - local.get $7 + local.get $4 + local.get $8 i32.eq if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 1 i32.shl - local.tee $5 + local.tee $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 - local.get $0 local.get $5 + local.get $0 + local.get $3 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 local.get $1 local.get $10 call $~lib/string/String#indexOf - local.tee $5 + local.tee $3 i32.const -1 i32.xor if - local.get $5 + local.get $3 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $5 - local.get $7 + local.get $3 + local.get $8 i32.add local.set $10 br $while-continue|1 @@ -23233,17 +23098,17 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end - local.get $4 + local.get $3 local.set $5 loop $while-continue|2 local.get $0 local.get $1 local.get $10 call $~lib/string/String#indexOf - local.tee $9 + local.tee $7 i32.const -1 i32.xor if @@ -23261,7 +23126,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 1 i32.shl i32.const 1 @@ -23270,9 +23135,9 @@ i32.store offset=4 end local.get $5 - local.get $3 - local.get $8 + local.get $4 local.get $9 + local.get $7 local.get $10 i32.sub local.tee $6 @@ -23292,7 +23157,7 @@ local.tee $11 i32.store offset=4 end - local.get $8 + local.get $9 i32.const 1 i32.shl local.get $11 @@ -23307,24 +23172,24 @@ i32.shl call $~lib/memory/memory.copy local.get $6 - local.get $8 + local.get $9 i32.add - local.tee $10 + local.tee $6 i32.const 1 i32.shl local.get $11 i32.add local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 - local.get $10 + local.get $4 + local.get $6 i32.add - local.set $8 + local.set $9 local.get $7 - local.get $9 + local.get $8 i32.add local.set $10 br $while-continue|2 @@ -23333,8 +23198,8 @@ local.get $11 if local.get $5 - local.get $8 - local.get $4 + local.get $9 + local.get $3 local.get $10 i32.sub local.tee $1 @@ -23355,7 +23220,7 @@ end local.get $1 if - local.get $8 + local.get $9 i32.const 1 i32.shl local.get $11 @@ -23372,7 +23237,7 @@ end local.get $5 local.get $1 - local.get $8 + local.get $9 i32.add local.tee $0 i32.gt_u @@ -23493,24 +23358,24 @@ local.get $2 i32.const 1 i32.shl - local.tee $3 + local.tee $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $1 i32.const 1 i32.shl local.get $0 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -23669,10 +23534,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $4 i32.sub - local.tee $2 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -23686,7 +23551,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -23699,7 +23564,7 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 @@ -23708,7 +23573,7 @@ local.get $0 local.get $4 i32.add - local.get $2 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -23798,14 +23663,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -23840,47 +23704,46 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - local.tee $1 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 @@ -23888,16 +23751,16 @@ end local.get $5 i32.add - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 local.get $1 local.get $2 + local.get $0 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -23915,28 +23778,28 @@ i32.const 1 i32.add i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store local.get $2 i64.extend_i32_u local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 2 i32.ge_u if - local.get $1 + local.get $0 i32.const 2 i32.sub - local.tee $1 + local.tee $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add local.get $3 i32.wrap_i64 @@ -23955,11 +23818,11 @@ br $while-continue|0 end end - local.get $1 + local.get $0 i32.const 1 i32.and if - local.get $0 + local.get $1 local.get $3 i32.wrap_i64 i32.const 6 @@ -23977,6 +23840,7 @@ local.tee $6 local.set $3 local.get $1 + local.tee $2 i32.popcnt i32.const 1 i32.eq @@ -23987,7 +23851,7 @@ i32.wrap_i64 i32.sub i32.const 31 - local.get $1 + local.get $2 i32.clz i32.sub i32.div_u @@ -23995,7 +23859,7 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $1 + local.get $2 i64.extend_i32_s local.tee $7 local.set $4 @@ -24023,8 +23887,8 @@ end loop $while-continue|1 local.get $3 - i64.const 1 - i64.ge_u + i64.const 0 + i64.ne if local.get $3 local.get $7 @@ -24043,23 +23907,23 @@ end local.get $5 i32.add - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 local.get $6 + local.get $0 local.get $2 - local.get $1 call $~lib/util/number/utoa64_any_core end end local.get $5 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -24067,11 +23931,11 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i32) + (local $2 i32) + (local $3 i64) (local $4 i64) (local $5 i64) (local $6 i64) @@ -24093,14 +23957,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -24125,62 +23988,61 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 local.get $1 local.get $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -24196,17 +24058,17 @@ i32.shr_s i32.const 1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store local.get $0 i64.extend_i32_u - local.set $2 - local.get $1 + local.set $3 + local.get $2 local.set $0 loop $while-continue|0 local.get $0 @@ -24219,9 +24081,9 @@ local.tee $0 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.add - local.get $2 + local.get $3 i32.wrap_i64 i32.const 255 i32.and @@ -24231,10 +24093,10 @@ i32.add i32.load i32.store - local.get $2 + local.get $3 i64.const 8 i64.shr_u - local.set $2 + local.set $3 br $while-continue|0 end end @@ -24242,8 +24104,8 @@ i32.const 1 i32.and if + local.get $1 local.get $3 - local.get $2 i32.wrap_i64 i32.const 6 i32.shl @@ -24258,19 +24120,20 @@ local.get $0 i64.extend_i32_u local.tee $5 - local.set $2 + local.set $3 local.get $1 + local.tee $2 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $2 + local.get $3 i64.clz i32.wrap_i64 i32.sub i32.const 31 - local.get $1 + local.get $2 i32.clz i32.sub i32.div_u @@ -24278,21 +24141,21 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $1 + local.get $2 i64.extend_i32_s local.tee $6 local.set $4 i32.const 1 local.set $0 loop $while-continue|00 - local.get $2 + local.get $3 local.get $4 i64.ge_u if - local.get $2 + local.get $3 local.get $4 i64.div_u - local.set $2 + local.set $3 local.get $4 local.get $4 i64.mul @@ -24305,14 +24168,14 @@ end end loop $while-continue|1 - local.get $2 - i64.const 1 - i64.ge_u + local.get $3 + i64.const 0 + i64.ne if - local.get $2 + local.get $3 local.get $6 i64.div_u - local.set $2 + local.set $3 local.get $0 i32.const 1 i32.add @@ -24329,12 +24192,12 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 local.get $5 local.get $0 - local.get $1 + local.get $2 call $~lib/util/number/utoa64_any_core end end @@ -24342,14 +24205,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 ) (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) - (local $5 i32) - (local $6 i64) + (local $5 i64) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24368,14 +24231,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -24405,54 +24267,54 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $5 local.tee $1 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.tee $1 + local.tee $6 i32.const 1 i32.shl i32.const 1 @@ -24460,8 +24322,8 @@ local.tee $3 i32.store local.get $3 - local.get $5 local.get $1 + local.get $6 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -24619,7 +24481,7 @@ end local.get $1 i64.extend_i32_s - local.tee $6 + local.tee $5 local.set $4 i32.const 1 local.set $3 @@ -24645,11 +24507,11 @@ end loop $while-continue|1 local.get $2 - i64.const 1 - i64.ge_u + i64.const 0 + i64.ne if local.get $2 - local.get $6 + local.get $5 i64.div_u local.set $2 local.get $3 @@ -24663,7 +24525,7 @@ i32.const 1 i32.sub end - local.tee $5 + local.tee $6 i32.const 1 i32.shl i32.const 1 @@ -24672,7 +24534,7 @@ i32.store local.get $3 local.get $0 - local.get $5 + local.get $6 local.get $1 call $~lib/util/number/utoa64_any_core end @@ -24684,12 +24546,12 @@ local.get $3 ) (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) + (local $2 i64) + (local $3 i32) (local $4 i32) (local $5 i64) - (local $6 i32) - (local $7 i64) + (local $6 i64) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24708,14 +24570,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -24756,48 +24617,48 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $2 local.tee $1 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $3 i32.const 100000000 i32.ge_u i32.add @@ -24805,16 +24666,16 @@ end local.get $4 i32.add - local.tee $6 + local.tee $7 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store + local.get $3 local.get $1 - local.get $2 - local.get $6 + local.get $7 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -24870,16 +24731,16 @@ end local.get $4 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 local.get $0 - local.get $2 + local.get $1 call $~lib/util/number/utoa64_dec_lut end else @@ -24899,25 +24760,25 @@ i32.const 1 i32.add i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store loop $while-continue|0 - local.get $2 + local.get $1 i32.const 2 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $3 i32.add local.get $0 i32.wrap_i64 @@ -24936,11 +24797,11 @@ br $while-continue|0 end end - local.get $2 + local.get $1 i32.const 1 i32.and if - local.get $1 + local.get $3 local.get $0 i32.wrap_i64 i32.const 6 @@ -24954,20 +24815,19 @@ global.get $~lib/memory/__stack_pointer block $__inlined_func$~lib/util/number/ulog_base (result i32) local.get $0 - local.set $3 + local.set $2 local.get $1 - local.tee $2 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $3 + local.get $2 i64.clz i32.wrap_i64 i32.sub i32.const 31 - local.get $2 + local.get $1 i32.clz i32.sub i32.div_u @@ -24975,71 +24835,71 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $2 + local.get $1 i64.extend_i32_s - local.tee $7 + local.tee $6 local.set $5 i32.const 1 - local.set $1 + local.set $3 loop $while-continue|00 - local.get $3 + local.get $2 local.get $5 i64.ge_u if - local.get $3 + local.get $2 local.get $5 i64.div_u - local.set $3 + local.set $2 local.get $5 local.get $5 i64.mul local.set $5 - local.get $1 + local.get $3 i32.const 1 i32.shl - local.set $1 + local.set $3 br $while-continue|00 end end loop $while-continue|1 - local.get $3 - i64.const 1 - i64.ge_u + local.get $2 + i64.const 0 + i64.ne if - local.get $3 - local.get $7 + local.get $2 + local.get $6 i64.div_u - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end - local.get $1 + local.get $3 i32.const 1 i32.sub end local.get $4 i32.add - local.tee $6 + local.tee $7 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 local.get $0 - local.get $6 - local.get $2 + local.get $7 + local.get $1 call $~lib/util/number/utoa64_any_core end end local.get $4 if - local.get $1 + local.get $3 i32.const 45 i32.store16 end @@ -25047,7 +24907,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) @@ -25131,4 +24991,77 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + 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 + ) ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index dfb1faca55..7ec58f8860 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -4795,14 +4795,17 @@ i32.or i32.const 160 i32.eq - local.get $0 - i32.const 9 - i32.sub - i32.const 13 - i32.const 9 - i32.sub - i32.le_u - i32.or + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u + end return end local.get $0 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index c50b5f8734..b3930647c5 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -104,46 +104,46 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/symbol/idToString local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1328 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1536 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1648 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -210,7 +210,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -233,7 +233,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -243,15 +243,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -316,30 +316,6 @@ 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) @@ -376,11 +352,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -392,28 +367,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -425,19 +397,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -462,9 +434,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -472,17 +444,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -610,7 +582,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -621,7 +593,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -641,44 +613,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -688,7 +659,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -698,20 +669,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -739,7 +710,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -766,15 +737,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -786,15 +754,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -815,6 +783,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -824,7 +795,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -861,8 +832,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1021,7 +992,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1146,7 +1121,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1156,7 +1131,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1169,14 +1144,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1201,56 +1175,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1398,14 +1369,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1415,17 +1386,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1441,22 +1412,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1467,11 +1438,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1566,10 +1537,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1577,7 +1544,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1588,54 +1558,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 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 $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1643,16 +1609,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1661,7 +1627,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1669,9 +1635,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1682,11 +1648,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1697,12 +1663,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1715,89 +1681,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + 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 $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + 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 $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1805,7 +1771,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1813,66 +1779,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -2092,7 +1998,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2106,32 +2012,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2148,29 +2053,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2184,48 +2089,49 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + 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 local.get $0 i32.load offset=8 local.tee $2 @@ -2240,6 +2146,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -2248,9 +2155,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1648 @@ -2276,17 +2182,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2432,19 +2338,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2459,7 +2365,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2470,10 +2376,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2481,10 +2387,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2495,7 +2401,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2525,17 +2431,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2550,7 +2456,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2561,10 +2467,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2572,10 +2478,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2586,7 +2492,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2612,17 +2518,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2637,7 +2543,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2648,10 +2554,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2659,10 +2565,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2673,7 +2579,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2710,131 +2616,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2851,59 +2735,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2920,7 +2798,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2931,11 +2809,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2949,17 +2827,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3168,34 +3046,34 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2700 - i32.lt_s - if - i32.const 19104 - i32.const 19152 + block $__inlined_func$~lib/string/String#concat (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 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3204,9 +3082,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3214,63 +3092,113 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1824 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) - block $invalid - block $~lib/map/Map - block $~lib/map/Map<~lib/string/String,usize> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + (local $3 i32) + block $folding-inner0 + block $invalid + block $~lib/map/Map + block $~lib/map/Map<~lib/string/String,usize> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - local.tee $0 + local.tee $1 if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + local.get $0 + i32.load offset=8 + local.tee $1 + local.tee $0 + i32.add + local.set $2 + loop $while-continue|0 local.get $0 - call $~lib/rt/itcms/__visit + local.get $2 + i32.lt_u + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + end + local.get $0 + i32.const 12 + i32.add + local.set $0 + br $while-continue|0 + end end - return + br $folding-inner0 end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=16 i32.const 12 @@ -3281,7 +3209,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|0 + loop $while-continue|03 local.get $0 local.get $2 i32.lt_u @@ -3293,60 +3221,29 @@ i32.eqz if local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=4 + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end local.get $0 i32.const 12 i32.add local.set $0 - br $while-continue|0 + br $while-continue|03 end end - local.get $1 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - local.get $0 - i32.load offset=8 - local.tee $1 - local.tee $0 - i32.add - local.set $2 - loop $while-continue|00 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 12 - i32.add - local.set $0 - br $while-continue|00 - end + br $folding-inner0 end + unreachable + end + local.get $1 + if local.get $1 - call $~lib/rt/itcms/__visit - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start global.get $~started @@ -3441,15 +3338,16 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3457,22 +3355,22 @@ if global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/stringToId - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,usize>#find if global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/stringToId - local.tee $2 + local.tee $0 i32.store - local.get $2 + 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 $2 + local.tee $0 i32.eqz if i32.const 1648 @@ -3482,7 +3380,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3498,52 +3396,58 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 3 i32.store offset=4 - local.get $2 + local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 4 i32.store offset=12 - local.get $2 + local.get $0 i32.const 0 i32.store offset=16 - local.get $2 + local.get $0 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 global.set $~lib/symbol/stringToId global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3552,60 +3456,66 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 3 i32.store offset=4 - local.get $2 + local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 4 i32.store offset=12 - local.get $2 + local.get $0 i32.const 0 i32.store offset=16 - local.get $2 + local.get $0 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 global.set $~lib/symbol/idToString end global.get $~lib/symbol/nextId - local.tee $6 + local.tee $2 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $6 + local.get $2 i32.eqz if unreachable @@ -3613,7 +3523,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $~lib/symbol/stringToId - local.tee $2 + local.tee $5 i32.store local.get $0 i32.const 4 @@ -3622,30 +3532,32 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 + local.get $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $2 + local.get $5 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $9 + local.tee $6 call $~lib/map/Map<~lib/string/String,usize>#find local.tee $0 if local.get $0 - local.get $6 + local.get $1 i32.store offset=4 else - local.get $2 + local.get $5 i32.load offset=16 - local.get $2 + local.get $5 i32.load offset=12 i32.eq if - local.get $2 + local.get $5 i32.load offset=20 - local.get $2 + local.get $5 i32.load offset=12 i32.const 3 i32.mul @@ -3653,17 +3565,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $2 + local.get $5 i32.load offset=4 else - local.get $2 + local.get $5 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $4 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -3671,7 +3583,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3680,14 +3592,14 @@ i32.const 0 i32.store offset=8 local.get $0 - local.get $4 + local.get $7 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -3695,59 +3607,59 @@ i32.shl i32.const 3 i32.div_s - local.tee $10 + local.tee $9 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $5 i32.load offset=8 - local.tee $3 - local.get $2 + local.tee $4 + local.get $5 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 - local.get $1 + local.set $10 + local.get $3 local.set $0 loop $while-continue|0 - local.get $3 - local.get $5 + local.get $4 + local.get $10 i32.ne if - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.load - local.tee $8 + local.tee $11 i32.store offset=8 local.get $0 - local.get $8 + local.get $11 i32.store local.get $0 - local.get $3 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $8 + local.get $11 call $~lib/util/hash/HASH<~lib/string/String> - local.get $4 + local.get $7 i32.and i32.const 2 i32.shl - local.get $7 + local.get $8 i32.add - local.tee $8 + local.tee $11 i32.load i32.store offset=8 - local.get $8 + local.get $11 local.get $0 i32.store local.get $0 @@ -3755,35 +3667,41 @@ i32.add local.set $0 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end - local.get $2 - local.get $7 + local.get $5 + local.get $8 i32.store - local.get $2 + local.get $8 + if + local.get $5 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $4 i32.store offset=4 - local.get $2 - local.get $1 + local.get $5 + local.get $3 i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $10 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 + local.get $9 i32.store offset=12 - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -3792,18 +3710,18 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.load offset=8 local.tee $0 i32.store - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=16 - local.tee $4 + local.tee $3 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $3 i32.const 12 i32.mul local.get $0 @@ -3811,33 +3729,33 @@ local.tee $0 i32.const 1056 i32.store - local.get $2 + local.get $5 i32.const 1056 i32.const 1 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link local.get $0 - local.get $6 + local.get $1 i32.store offset=4 - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $9 + local.get $6 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store end @@ -3848,7 +3766,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $~lib/symbol/idToString - local.tee $2 + local.tee $5 i32.store local.get $0 i32.const 4 @@ -3857,13 +3775,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $2 + local.get $5 i32.load - local.get $6 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -3873,26 +3791,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $8 - local.get $2 + local.tee $6 + local.get $5 i32.load offset=4 i32.and i32.const 2 @@ -3901,28 +3819,28 @@ i32.load local.set $0 block $__inlined_func$~lib/map/Map#find - loop $while-continue|00 + loop $while-continue|02 local.get $0 if local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|00 + br $while-continue|02 end end i32.const 0 @@ -3933,20 +3851,20 @@ local.get $0 i32.const 1056 i32.store offset=4 - local.get $2 + local.get $5 i32.const 1056 i32.const 1 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link else - local.get $2 + local.get $5 i32.load offset=16 - local.get $2 + local.get $5 i32.load offset=12 i32.eq if - local.get $2 + local.get $5 i32.load offset=20 - local.get $2 + local.get $5 i32.load offset=12 i32.const 3 i32.mul @@ -3954,17 +3872,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $2 + local.get $5 i32.load offset=4 else - local.get $2 + local.get $5 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $4 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3972,20 +3890,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $4 + local.get $7 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -3997,41 +3915,41 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $5 i32.load offset=8 - local.tee $3 - local.get $2 + local.tee $4 + local.get $5 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $10 - local.get $1 + local.get $3 local.set $0 - loop $while-continue|01 - local.get $3 + loop $while-continue|03 + local.get $4 local.get $10 i32.ne if - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $3 + local.get $4 i32.load - local.tee $5 + local.tee $11 i32.store local.get $0 - local.get $3 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $5 + local.get $11 i32.const -1028477379 i32.mul i32.const 374761397 @@ -4040,35 +3958,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $5 + local.tee $11 + local.get $11 i32.const 15 i32.shr_u - local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $5 + local.tee $11 + local.get $11 i32.const 13 i32.shr_u - local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $5 + local.tee $11 + local.get $11 i32.const 16 i32.shr_u - local.get $5 i32.xor - local.get $4 + local.get $7 i32.and i32.const 2 i32.shl - local.get $7 + local.get $8 i32.add - local.tee $5 + local.tee $11 i32.load i32.store offset=8 - local.get $5 + local.get $11 local.get $0 i32.store local.get $0 @@ -4076,35 +3994,41 @@ i32.add local.set $0 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 - br $while-continue|01 + local.set $4 + br $while-continue|03 end end - local.get $2 - local.get $7 + local.get $5 + local.get $8 i32.store - local.get $2 + local.get $8 + if + local.get $5 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $4 i32.store offset=4 - local.get $2 - local.get $1 + local.get $5 + local.get $3 i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 local.get $9 i32.store offset=12 - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -4113,52 +4037,52 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.load offset=8 local.tee $0 i32.store - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=16 - local.tee $4 + local.tee $3 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $3 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $6 + local.get $1 i32.store local.get $0 i32.const 1056 i32.store offset=4 - local.get $2 + local.get $5 i32.const 1056 i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $5 + local.get $5 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $8 + local.get $6 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=8 - local.get $2 + local.get $1 local.get $0 i32.store end @@ -4170,7 +4094,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $2 return end i32.const 19104 @@ -4221,23 +4145,23 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -4439,23 +4363,23 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -4497,12 +4421,12 @@ end if global.get $~lib/memory/__stack_pointer - local.tee $2 - global.get $~lib/symbol/idToString local.tee $1 + global.get $~lib/symbol/idToString + local.tee $2 i32.store offset=4 - local.get $2 local.get $1 + local.get $2 local.get $0 call $~lib/map/Map#get local.tee $2 @@ -4899,4 +4823,77 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + 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 + ) ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 18df4d77cd..8c5d167c33 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -679,31 +679,31 @@ (local $0 i32) (local $1 i32) i32.const 7152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7616 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7728 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 10928 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11008 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 8432 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 9488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -770,7 +770,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -793,7 +793,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -803,15 +803,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -876,30 +876,6 @@ 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) @@ -936,11 +912,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -952,28 +927,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -985,19 +957,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1022,9 +994,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1032,17 +1004,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1170,7 +1142,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1181,7 +1153,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1201,44 +1173,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1248,7 +1219,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1258,20 +1229,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1299,7 +1270,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1326,15 +1297,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1346,15 +1314,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1375,6 +1343,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1384,7 +1355,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1421,8 +1392,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1537,18 +1508,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1631,7 +1602,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1766,56 +1741,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1893,19 +1865,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1916,54 +1881,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - 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 - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1971,16 +1932,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1988,16 +1949,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -2014,7 +1975,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2024,13 +1985,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2043,40 +2004,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2096,12 +2057,10 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) block $~lib/util/memory/memset|inlined.0 local.get $2 @@ -2113,7 +2072,7 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.sub local.get $1 @@ -2128,12 +2087,12 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $3 + local.get $4 i32.const 2 i32.sub local.get $1 i32.store8 - local.get $3 + local.get $4 i32.const 3 i32.sub local.get $1 @@ -2145,7 +2104,7 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $3 + local.get $4 i32.const 4 i32.sub local.get $1 @@ -2160,9 +2119,9 @@ i32.sub i32.const 3 i32.and - local.tee $5 + local.tee $4 i32.add - local.tee $3 + local.tee $5 local.get $1 i32.const 255 i32.and @@ -2170,9 +2129,9 @@ i32.mul local.tee $0 i32.store - local.get $3 - local.get $2 local.get $5 + local.get $2 + local.get $4 i32.sub i32.const -4 i32.and @@ -2187,10 +2146,10 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=4 - local.get $3 + local.get $5 local.get $0 i32.store offset=8 local.get $1 @@ -2207,16 +2166,16 @@ i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=12 - local.get $3 + local.get $5 local.get $0 i32.store offset=16 - local.get $3 + local.get $5 local.get $0 i32.store offset=20 - local.get $3 + local.get $5 local.get $0 i32.store offset=24 local.get $1 @@ -2239,43 +2198,43 @@ i32.sub local.get $0 i32.store - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 i32.add - local.tee $5 + local.tee $4 i32.add local.set $1 local.get $2 - local.get $5 + local.get $4 i32.sub local.set $2 local.get $0 i64.extend_i32_u - local.tee $4 + local.tee $3 i64.const 32 i64.shl - local.get $4 + local.get $3 i64.or - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u if local.get $1 - local.get $4 + local.get $3 i64.store local.get $1 - local.get $4 + local.get $3 i64.store offset=8 local.get $1 - local.get $4 + local.get $3 i64.store offset=16 local.get $1 - local.get $4 + local.get $3 i64.store offset=24 local.get $2 i32.const 32 @@ -2338,23 +2297,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 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/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2366,8 +2329,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2402,61 +2365,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $std/typedarray/testInstantiate (param $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3066,41 +2974,41 @@ (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 f64) - (local $8 i32) + (local $7 i32) + (local $8 f64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 f64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f64.load @@ -3108,7 +3016,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3117,10 +3025,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -3136,10 +3044,10 @@ local.get $0 i32.add f64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -3152,7 +3060,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f64.store offset=16 local.get $3 i32.const 1 @@ -3214,10 +3122,10 @@ i32.add local.get $6 f64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -3225,8 +3133,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 f64) - (local $6 f64) - (local $7 i32) + (local $6 i32) + (local $7 f64) local.get $1 local.get $2 i32.eq @@ -3267,9 +3175,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f64.load offset=8 - local.get $7 + local.get $6 f64.load i32.const 2 global.set $~argumentsLength @@ -3310,14 +3218,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f64.load f64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f64.store local.get $2 @@ -3496,13 +3404,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) (local $12 i32) (local $13 i32) - (local $14 f64) - (local $15 f64) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -3516,11 +3425,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -3528,17 +3436,17 @@ end local.get $0 f64.load - local.set $15 + local.set $11 local.get $0 f64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3547,21 +3455,20 @@ local.tee $1 select f64.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3571,25 +3478,25 @@ select f64.store offset=8 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $15 + local.set $10 local.get $0 f64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3599,8 +3506,8 @@ select f64.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=8 @@ -3608,7 +3515,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -3620,52 +3527,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 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/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -3674,32 +3597,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -3708,68 +3631,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -3777,26 +3698,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -3805,14 +3726,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -3824,7 +3745,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -3836,13 +3757,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -3853,9 +3774,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -3983,67 +3904,64 @@ ) (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - local.set $4 local.get $0 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - local.set $1 + local.set $0 local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $1 + local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select else local.get $2 - local.get $1 - local.get $1 + local.get $0 + local.get $0 local.get $2 i32.gt_s select end - local.tee $0 + local.tee $2 local.get $3 i32.const 0 i32.lt_s if (result i32) - local.get $1 + local.get $0 local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $3 - local.get $1 - local.get $1 + local.get $0 + local.get $0 local.get $3 i32.gt_s select end - local.tee $1 + local.tee $0 i32.lt_s if - local.get $0 - local.get $5 - i32.add + local.get $2 local.get $4 + i32.add local.get $1 local.get $0 + local.get $2 i32.sub call $~lib/memory/memory.fill end @@ -4061,17 +3979,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -4217,19 +4135,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -4244,7 +4162,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -4255,10 +4173,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -4266,10 +4184,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -4280,7 +4198,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -4310,17 +4228,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -4335,7 +4253,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -4346,10 +4264,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -4357,10 +4275,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -4371,7 +4289,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -4397,17 +4315,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -4422,7 +4340,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -4433,10 +4351,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -4444,10 +4362,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -4458,7 +4376,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -4495,131 +4413,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -4636,59 +4532,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -4705,7 +4595,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -4716,11 +4606,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -4734,17 +4624,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -5916,7 +5806,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -5925,28 +5815,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -6128,7 +6018,7 @@ block $__inlined_func$~lib/math/NativeMathf.mod (result f32) local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $3 i32.const 23 i32.shr_u i32.const 255 @@ -6145,37 +6035,33 @@ f32.div br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $1 + local.get $3 i32.const 1 i32.shl - local.tee $3 + local.tee $1 i32.const -2147483648 i32.le_u if local.get $0 - local.get $3 + local.get $1 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 $4 local.get $2 if (result i32) - local.get $1 + local.get $3 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $1 + local.get $3 i32.const 1 local.get $2 - local.get $1 + local.get $3 i32.const 9 i32.shl i32.clz @@ -6240,32 +6126,31 @@ i32.const 8 i32.shl i32.clz - local.tee $3 + local.tee $4 i32.sub local.set $2 - local.get $1 local.get $3 + i32.const -2147483648 + i32.and + local.get $1 + local.get $4 i32.shl - local.set $1 + local.tee $1 + i32.const 8388608 + i32.sub + local.get $2 + i32.const 23 + i32.shl + i32.or + local.get $1 + i32.const 1 + local.get $2 + i32.sub + i32.shr_u 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 $4 + select i32.or f32.reinterpret_i32 end @@ -6280,7 +6165,7 @@ block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $5 i64.const 52 i64.shr_u i64.const 2047 @@ -6297,32 +6182,28 @@ f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 + local.get $5 i64.const 1 i64.shl - local.tee $5 + local.tee $3 i64.const -9223372036854775808 i64.le_u if local.get $0 - local.get $5 + local.get $3 i64.const -9223372036854775808 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 - i64.const 63 - i64.shr_u - local.set $6 local.get $4 i64.eqz if (result i64) - local.get $3 + local.get $5 i64.const 1 local.get $4 - local.get $3 + local.get $5 i64.const 12 i64.shl i64.clz @@ -6331,7 +6212,7 @@ i64.sub i64.shl else - local.get $3 + local.get $5 i64.const 4503599627370495 i64.and i64.const 4503599627370496 @@ -6393,35 +6274,34 @@ i64.const 11 i64.shl i64.clz - local.tee $5 + local.tee $4 i64.sub - local.set $4 - local.get $3 + local.set $6 local.get $5 + i64.const 63 + i64.shr_u + i64.const 63 i64.shl - local.set $3 + local.get $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 + i64.shl + local.tee $3 + i64.const 4503599627370496 + i64.sub local.get $6 - i64.const 63 + i64.const 52 i64.shl i64.or + local.get $3 + i64.const 1 + local.get $6 + i64.sub + i64.shr_u + local.get $6 + i64.const 0 + i64.gt_s + select + i64.or f64.reinterpret_i64 end f64.const 0 @@ -6429,79 +6309,92 @@ ) (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) local.get $0 i32.load offset=4 - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.gt_u if - local.get $2 + local.get $5 i32.const 1 i32.shr_u - local.set $8 - local.get $2 + local.set $4 + local.get $5 i32.const 8 i32.sub - local.set $3 + local.set $6 loop $while-continue|0 - local.get $8 + local.get $4 local.get $1 i32.const 7 i32.add i32.gt_u if local.get $1 - local.get $5 + local.get $3 i32.add - local.tee $4 + local.tee $7 i64.load - local.tee $6 + local.tee $2 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $6 + local.get $2 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.set $6 - local.get $4 + 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 + local.set $2 + local.get $7 local.get $3 - local.get $5 + local.get $6 i32.add local.get $1 i32.sub - local.tee $4 - i64.load local.tee $7 + i64.load + local.tee $8 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $7 + local.get $8 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.tee $7 + local.tee $8 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $7 + local.get $8 i64.const 281470681808895 i64.and i64.const 16 @@ -6510,20 +6403,8 @@ i64.const 32 i64.rotr i64.store - local.get $4 - local.get $6 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $6 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr + local.get $7 + local.get $2 i64.store local.get $1 i32.const 8 @@ -6532,32 +6413,32 @@ br $while-continue|0 end end - local.get $2 + local.get $5 i32.const 1 i32.sub - local.set $2 + local.set $5 loop $while-continue|1 local.get $1 - local.get $8 + local.get $4 i32.lt_u if local.get $1 - local.get $5 + local.get $3 i32.add - local.tee $3 + local.tee $6 i32.load8_u - local.set $4 - local.get $3 - local.get $2 + local.set $7 + local.get $6 + local.get $5 local.get $1 i32.sub - local.get $5 + local.get $3 i32.add - local.tee $3 + local.tee $6 i32.load8_u i32.store8 - local.get $3 - local.get $4 + local.get $6 + local.get $7 i32.store8 local.get $1 i32.const 1 @@ -6577,50 +6458,49 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $2 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 i32.const 1 i32.gt_u if - local.get $2 + local.get $4 i32.const 1 i32.shr_u - local.set $7 - local.get $2 + local.set $3 + local.get $4 i32.const 2 i32.sub - local.set $4 + local.set $5 loop $while-continue|0 - local.get $7 + local.get $3 local.get $1 i32.const 1 i32.add i32.gt_u if - local.get $4 + local.get $5 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $5 + local.tee $6 i32.load i32.const 16 i32.rotr - local.set $8 - local.get $5 + local.set $7 + local.get $6 local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $6 i32.load @@ -6628,7 +6508,7 @@ i32.rotr i32.store local.get $6 - local.get $8 + local.get $7 i32.store local.get $1 i32.const 2 @@ -6637,36 +6517,36 @@ br $while-continue|0 end end - local.get $2 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.lt_u if local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $4 - local.get $2 - local.get $6 + local.set $6 + local.get $5 + local.get $4 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $5 i32.load16_u i32.store16 local.get $5 - local.get $4 + local.get $6 i32.store16 local.get $1 i32.const 1 @@ -6700,66 +6580,64 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Int8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.eqz @@ -6790,24 +6668,24 @@ block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 11 @@ -6817,7 +6695,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -6838,37 +6716,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -6889,37 +6767,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -6940,37 +6818,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -6991,37 +6869,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 3 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -7042,37 +6920,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -7093,37 +6971,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 10 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -7141,8 +7019,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $2 i32.load offset=8 local.tee $3 @@ -7151,44 +7029,43 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7202,42 +7079,43 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.eqz @@ -7245,7 +7123,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -7263,43 +7141,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -7308,7 +7185,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -7328,43 +7205,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -7373,7 +7249,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -7393,43 +7269,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7438,7 +7313,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -7459,7 +7334,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 local.tee $0 i32.eqz @@ -7475,15 +7351,15 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 @@ -7493,7 +7369,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -7512,12 +7388,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -7529,25 +7405,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -7566,12 +7442,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -7583,25 +7459,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -7620,12 +7496,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -7637,25 +7513,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -7673,44 +7549,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7722,44 +7597,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -7775,14 +7649,14 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Int8Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7790,28 +7664,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -7832,8 +7706,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7841,28 +7715,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -7881,8 +7755,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7890,28 +7764,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -7932,8 +7806,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7941,28 +7815,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -7983,8 +7857,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7992,28 +7866,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -8034,8 +7908,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -8043,28 +7917,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -8085,8 +7959,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -8094,28 +7968,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -8136,22 +8010,22 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -8161,12 +8035,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -8210,67 +8084,65 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 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 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.eqz @@ -8301,24 +8173,24 @@ block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 11 @@ -8328,7 +8200,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -8349,37 +8221,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -8400,37 +8272,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -8451,37 +8323,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -8502,37 +8374,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 3 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -8553,37 +8425,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -8604,37 +8476,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 10 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -8652,8 +8524,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $2 i32.load offset=8 local.tee $3 @@ -8662,44 +8534,43 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -8713,42 +8584,43 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.eqz @@ -8756,7 +8628,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -8774,43 +8646,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -8819,7 +8690,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -8839,43 +8710,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -8884,7 +8754,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -8904,43 +8774,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -8949,7 +8818,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -8970,7 +8839,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 local.tee $0 i32.eqz @@ -8986,15 +8856,15 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 @@ -9004,7 +8874,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -9023,12 +8893,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -9040,25 +8910,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -9077,12 +8947,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -9094,25 +8964,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -9131,12 +9001,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -9148,25 +9018,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -9184,44 +9054,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -9233,44 +9102,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -9285,14 +9153,14 @@ local.get $2 i32.const 9 call $~lib/typedarray/Uint8Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9300,28 +9168,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -9342,8 +9210,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9351,28 +9219,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -9391,8 +9259,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9400,28 +9268,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -9442,8 +9310,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9451,28 +9319,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -9493,8 +9361,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9502,28 +9370,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -9544,8 +9412,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9553,28 +9421,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -9595,8 +9463,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -9604,28 +9472,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -9646,22 +9514,22 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -9671,12 +9539,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -9720,67 +9588,65 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 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 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.eqz @@ -9811,24 +9677,24 @@ block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 11 @@ -9838,7 +9704,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -9859,37 +9725,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -9910,37 +9776,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -9961,37 +9827,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -10012,37 +9878,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 3 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -10063,37 +9929,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -10114,37 +9980,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 10 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -10162,8 +10028,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $2 i32.load offset=8 local.tee $3 @@ -10172,44 +10038,43 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -10223,42 +10088,43 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.eqz @@ -10266,7 +10132,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -10284,43 +10150,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -10329,7 +10194,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -10349,43 +10214,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -10394,7 +10258,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -10414,43 +10278,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10459,7 +10322,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -10480,7 +10343,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 local.tee $0 i32.eqz @@ -10496,15 +10360,15 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 @@ -10514,7 +10378,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -10533,12 +10397,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -10550,25 +10414,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -10587,12 +10451,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -10604,25 +10468,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -10641,12 +10505,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -10658,25 +10522,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -10694,44 +10558,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -10743,44 +10606,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -10795,14 +10657,14 @@ local.get $2 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10810,28 +10672,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -10852,8 +10714,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10861,28 +10723,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -10901,8 +10763,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10910,28 +10772,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -10952,8 +10814,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10961,28 +10823,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -11003,8 +10865,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -11012,28 +10874,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -11054,8 +10916,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -11063,28 +10925,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -11105,8 +10967,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -11114,28 +10976,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -11156,22 +11018,22 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -11181,12 +11043,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -11208,12 +11070,92 @@ 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) + (local $3 i32) + (local $4 i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + end + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + i32.const -1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $1 + local.set $2 + local.get $3 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $3 + local.get $3 + local.get $4 + i32.ge_s + select + local.get $3 + i32.const 0 + i32.lt_u + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 + end + end + i32.const -1 + end + ) (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~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 12 i32.sub @@ -11230,84 +11172,81 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 7728 i32.store - local.get $1 + local.get $0 i32.const 7740 i32.load - local.tee $1 + local.tee $0 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $3 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.extend16_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|0 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -11317,49 +11256,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|02 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11371,49 +11307,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|05 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11425,49 +11358,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|08 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -11479,50 +11409,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|011 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -11534,50 +11464,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|014 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -11589,50 +11519,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|017 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11644,50 +11574,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|020 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11699,58 +11629,58 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $3 + local.get $4 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|023 - local.get $0 - local.get $3 - i32.lt_s + local.get $1 + local.get $4 + i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -11763,62 +11693,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|00 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|00 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + local.get $3 + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -11829,63 +11706,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|06 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 11 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|06 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + local.get $3 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -11898,63 +11721,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 + local.get $3 i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|012 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 65535 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|012 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -11967,63 +11736,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|018 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 3 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|018 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + local.get $3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const 3 i32.ne if @@ -12036,14 +11751,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 i32.const 1 i32.sub @@ -12052,29 +11767,28 @@ i32.const 4 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end @@ -12094,14 +11808,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 local.get $0 i32.const 1 i32.sub @@ -12110,30 +11824,29 @@ i32.const 3 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|027 - local.get $0 + local.set $0 + loop $while-continue|03 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|03 end end i32.const -1 @@ -12152,14 +11865,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 local.get $0 i32.const 1 i32.sub @@ -12168,30 +11881,29 @@ i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 - local.get $0 + local.set $0 + loop $while-continue|07 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|030 + local.set $1 + br $while-continue|07 end end i32.const -1 @@ -12210,14 +11922,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 local.get $0 i32.const 1 i32.sub @@ -12226,30 +11938,29 @@ i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 - local.get $0 + local.set $0 + loop $while-continue|01125 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|01125 end end i32.const -1 @@ -12268,41 +11979,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 - local.get $0 + local.set $0 + loop $while-continue|015 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|036 + local.set $1 + br $while-continue|015 end end i32.const -1 @@ -12321,41 +12031,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 - local.get $0 + local.set $0 + loop $while-continue|019 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|039 + local.set $1 + br $while-continue|019 end end i32.const -1 @@ -12373,36 +12082,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 9 call $~lib/typedarray/Int16Array#subarray - local.tee $2 + local.tee $1 i32.store offset=8 - i32.const 0 - local.set $0 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|042 - local.get $0 + loop $while-continue|028 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12410,18 +12114,18 @@ i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|042 + local.set $2 + br $while-continue|028 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12433,30 +12137,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|045 - local.get $0 + loop $while-continue|031 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12464,18 +12165,18 @@ i32.load16_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|045 + local.set $2 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -12485,30 +12186,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|048 - local.get $0 + loop $while-continue|034 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12516,18 +12214,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $2 + br $while-continue|034 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -12539,30 +12237,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|051 - local.get $0 + loop $while-continue|037 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12570,18 +12265,18 @@ i32.load16_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|051 + local.set $2 + br $while-continue|037 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12593,30 +12288,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|054 - local.get $0 + loop $while-continue|040 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12624,18 +12316,18 @@ i32.load16_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|054 + local.set $2 + br $while-continue|040 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12647,30 +12339,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|057 - local.get $0 + loop $while-continue|043 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12678,18 +12367,18 @@ i32.load16_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $2 + br $while-continue|043 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12701,11 +12390,11 @@ unreachable end i32.const 1 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u @@ -12715,17 +12404,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|060 - local.get $0 + loop $while-continue|046 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12733,18 +12422,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|060 + local.set $2 + br $while-continue|046 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -12756,50 +12445,50 @@ unreachable end i32.const 2 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|063 - local.get $0 - local.get $4 + local.set $1 + loop $while-continue|049 + local.get $2 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|063 + local.set $2 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12821,6 +12510,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -12837,85 +12527,82 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 7728 i32.store - local.get $1 + local.get $0 i32.const 7740 i32.load - local.tee $1 + local.tee $0 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $3 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|0 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -12925,49 +12612,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|02 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12979,49 +12663,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|05 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -13033,49 +12714,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|08 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -13087,50 +12765,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|011 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -13142,50 +12820,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|014 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -13197,50 +12875,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|017 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -13252,50 +12930,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|020 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -13307,58 +12985,58 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $3 + local.get $4 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|023 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -13371,377 +13049,160 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 + local.get $3 + 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 i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 + global.set $~argumentsLength + local.get $3 + 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 + i32.const 1 + global.set $~argumentsLength + local.get $3 + 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 + i32.const 1 + global.set $~argumentsLength + local.get $3 + 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 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + i32.const 4 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + i32.const 4 + i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|00 - local.get $0 + local.set $0 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u - i32.eqz + i32.const 3 + i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|00 + local.set $1 + br $while-continue|024 end end i32.const -1 local.set $1 end local.get $1 + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 - i32.const 613 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 - local.get $4 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + i32.const 3 local.get $0 - local.get $0 - local.get $4 - i32.ge_s + i32.const 3 + i32.le_u select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|06 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 11 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|06 - end - end - i32.const -1 local.set $1 - end - local.get $1 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|012 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 65535 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|012 - end - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|018 - local.get $0 + loop $while-continue|03 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 3 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 local.get $1 i32.const 1 - i32.sub - local.set $0 - br $while-continue|018 - end - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $0 - i32.const 1 - i32.sub - i32.const 4 - local.get $0 - i32.const 4 - i32.le_u - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|024 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 3 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|024 - end - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 - local.get $0 - i32.const 1 - i32.sub - i32.const 3 - local.get $0 - i32.const 3 - i32.le_u - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|027 - local.get $0 - i32.const 0 - i32.ge_s - if local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|03 end end i32.const -1 @@ -13760,14 +13221,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 local.get $0 i32.const 1 i32.sub @@ -13776,30 +13237,29 @@ i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 - local.get $0 + local.set $0 + loop $while-continue|07 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|030 + local.set $1 + br $while-continue|07 end end i32.const -1 @@ -13818,14 +13278,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 local.get $0 i32.const 1 i32.sub @@ -13834,30 +13294,29 @@ i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 - local.get $0 + local.set $0 + loop $while-continue|01125 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|01125 end end i32.const -1 @@ -13876,41 +13335,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 - local.get $0 + local.set $0 + loop $while-continue|015 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|036 + local.set $1 + br $while-continue|015 end end i32.const -1 @@ -13929,41 +13387,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 - local.get $0 + local.set $0 + loop $while-continue|019 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|039 + local.set $1 + br $while-continue|019 end end i32.const -1 @@ -13981,36 +13438,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 9 call $~lib/typedarray/Uint16Array#subarray - local.tee $2 + local.tee $1 i32.store offset=8 - i32.const 0 - local.set $0 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|042 - local.get $0 + loop $while-continue|028 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14018,18 +13470,18 @@ i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|042 + local.set $2 + br $while-continue|028 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14041,30 +13493,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|045 - local.get $0 + loop $while-continue|031 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14072,18 +13521,18 @@ i32.load16_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|045 + local.set $2 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -14093,30 +13542,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|048 - local.get $0 + loop $while-continue|034 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14124,18 +13570,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $2 + br $while-continue|034 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14147,30 +13593,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|051 - local.get $0 + loop $while-continue|037 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14178,18 +13621,18 @@ i32.load16_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|051 + local.set $2 + br $while-continue|037 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14201,30 +13644,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|054 - local.get $0 + loop $while-continue|040 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14232,18 +13672,18 @@ i32.load16_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|054 + local.set $2 + br $while-continue|040 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14255,30 +13695,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|057 - local.get $0 + loop $while-continue|043 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14286,18 +13723,18 @@ i32.load16_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $2 + br $while-continue|043 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14309,11 +13746,11 @@ unreachable end i32.const 1 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u @@ -14323,17 +13760,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|060 - local.get $0 + loop $while-continue|046 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14341,18 +13778,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|060 + local.set $2 + br $while-continue|046 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14364,50 +13801,50 @@ unreachable end i32.const 2 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|063 - local.get $0 - local.get $4 + local.set $1 + loop $while-continue|049 + local.get $2 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|063 + local.set $2 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14445,68 +13882,63 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 7728 i32.store - local.get $1 + local.get $3 i32.const 7740 i32.load - local.tee $1 - call $~lib/typedarray/Int32Array#constructor local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.eqz @@ -14535,29 +13967,26 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $2 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 11 @@ -14567,7 +13996,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -14588,40 +14017,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $2 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const -1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -14642,40 +14068,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $2 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -14696,41 +14119,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $2 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -14751,41 +14174,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $2 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -14806,41 +14229,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $2 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -14861,41 +14284,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $2 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -14913,20 +14336,20 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $2 i32.const 100 i32.sub local.tee $1 @@ -14936,35 +14359,34 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14977,52 +14399,50 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|00 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15030,9 +14450,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -15043,53 +14461,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|06 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15097,9 +14513,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -15112,53 +14526,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|012 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15166,9 +14578,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -15181,53 +14591,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|018 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15235,9 +14643,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const 3 i32.ne if @@ -15251,7 +14657,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -15267,10 +14673,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $2 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -15279,7 +14685,7 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 @@ -15289,7 +14695,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -15308,14 +14714,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -15325,10 +14731,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $2 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -15337,17 +14743,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -15366,14 +14772,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -15383,10 +14789,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $2 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -15395,17 +14801,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -15424,14 +14830,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -15441,10 +14847,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $2 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -15453,17 +14859,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -15481,48 +14887,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -15534,48 +14939,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15587,50 +14991,47 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 4 i32.const 9 call $~lib/typedarray/Int32Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $3 + loop $while-continue|057 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -15651,40 +15052,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $3 + loop $while-continue|061 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -15703,40 +15101,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $3 + loop $while-continue|065 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -15757,40 +15152,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $3 + loop $while-continue|069 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -15811,40 +15203,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $3 + loop $while-continue|073 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -15865,40 +15254,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $3 + loop $while-continue|077 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -15919,41 +15305,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.le_u i32.const 1 - local.get $3 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $3 + loop $while-continue|081 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -15974,41 +15360,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $2 i32.const 2 i32.le_u i32.const 1 - local.get $4 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 + local.get $4 i32.load offset=4 - local.set $2 - loop $while-continue|063 + local.set $3 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -16052,68 +15438,63 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 7728 i32.store - local.get $1 + local.get $3 i32.const 7740 i32.load - local.tee $1 - call $~lib/typedarray/Uint32Array#constructor local.tee $2 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.eqz @@ -16142,29 +15523,26 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $2 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 11 @@ -16174,7 +15552,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -16195,40 +15573,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $2 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const -1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -16249,40 +15624,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $2 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -16303,41 +15675,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $2 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -16358,41 +15730,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $2 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -16413,41 +15785,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $2 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -16468,41 +15840,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $2 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -16520,20 +15892,20 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $2 i32.const 100 i32.sub local.tee $1 @@ -16543,35 +15915,34 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16584,52 +15955,50 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|00 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16637,9 +16006,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -16650,53 +16017,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|06 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16704,9 +16069,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -16719,53 +16082,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|012 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16773,9 +16134,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -16788,53 +16147,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|018 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16842,9 +16199,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const 3 i32.ne if @@ -16858,7 +16213,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -16874,10 +16229,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $2 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -16886,7 +16241,7 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 @@ -16896,7 +16251,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -16915,14 +16270,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -16932,10 +16287,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $2 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -16944,17 +16299,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -16973,14 +16328,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -16990,10 +16345,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $2 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -17002,17 +16357,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -17031,14 +16386,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -17048,10 +16403,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $2 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -17060,17 +16415,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -17088,48 +16443,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -17141,48 +16495,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17194,49 +16547,46 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 9 call $~lib/typedarray/Uint32Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $3 + loop $while-continue|057 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -17257,40 +16607,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $3 + loop $while-continue|061 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -17309,40 +16656,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $3 + loop $while-continue|065 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -17363,40 +16707,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $3 + loop $while-continue|069 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -17417,40 +16758,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $3 + loop $while-continue|073 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -17471,40 +16809,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $3 + loop $while-continue|077 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -17525,41 +16860,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.le_u i32.const 1 - local.get $3 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $3 + loop $while-continue|081 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -17580,41 +16915,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $2 i32.const 2 i32.le_u i32.const 1 - local.get $4 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 + local.get $4 i32.load offset=4 - local.set $2 - loop $while-continue|063 + local.set $3 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -17658,43 +16993,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Int64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -17702,25 +17035,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.eqz @@ -17753,25 +17083,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 11 @@ -17781,7 +17108,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -17802,40 +17129,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const -1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -17856,40 +17180,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -17910,41 +17231,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -17965,41 +17286,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -18020,41 +17341,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -18075,41 +17396,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -18127,8 +17448,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 local.get $2 i32.load offset=8 i32.const 3 @@ -18139,46 +17460,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -18192,46 +17512,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.eqz @@ -18239,7 +17562,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -18257,47 +17580,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 @@ -18306,7 +17628,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -18326,47 +17648,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const -1 @@ -18375,7 +17696,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -18395,47 +17716,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 @@ -18444,7 +17764,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -18465,7 +17785,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -18483,8 +17804,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -18493,7 +17814,7 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 @@ -18503,7 +17824,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -18522,14 +17843,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -18541,8 +17862,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -18551,17 +17872,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -18580,14 +17901,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -18599,8 +17920,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -18609,17 +17930,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -18638,14 +17959,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -18657,8 +17978,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -18667,17 +17988,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -18695,48 +18016,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -18748,48 +18068,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18804,27 +18123,24 @@ local.get $2 i32.const 9 call $~lib/typedarray/Int64Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -18833,17 +18149,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -18864,21 +18180,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -18887,17 +18200,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 4 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -18916,21 +18229,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -18939,17 +18249,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -18970,21 +18280,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -18993,17 +18300,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 9 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -19024,21 +18331,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -19047,17 +18351,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 10 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -19078,21 +18382,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -19101,17 +18402,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -19132,8 +18433,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -19143,11 +18444,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -19156,17 +18457,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -19187,24 +18488,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -19216,12 +18517,12 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -19265,43 +18566,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 @@ -19309,25 +18608,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.eqz @@ -19360,25 +18656,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 11 @@ -19388,7 +18681,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -19409,40 +18702,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const -1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -19463,40 +18753,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -19517,41 +18804,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -19572,41 +18859,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -19627,41 +18914,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -19682,41 +18969,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -19734,8 +19021,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 local.get $2 i32.load offset=8 i32.const 3 @@ -19746,46 +19033,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -19799,46 +19085,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.eqz @@ -19846,7 +19135,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -19864,47 +19153,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 @@ -19913,7 +19201,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -19933,47 +19221,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const -1 @@ -19982,7 +19269,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -20002,47 +19289,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 @@ -20051,7 +19337,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -20072,7 +19358,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -20090,8 +19377,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -20100,7 +19387,7 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 @@ -20110,7 +19397,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -20129,14 +19416,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -20148,8 +19435,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -20158,17 +19445,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -20187,14 +19474,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -20206,8 +19493,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -20216,17 +19503,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -20245,14 +19532,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -20264,8 +19551,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -20274,17 +19561,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -20302,48 +19589,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -20355,48 +19641,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20411,27 +19696,24 @@ local.get $2 i32.const 9 call $~lib/typedarray/Uint64Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -20440,17 +19722,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -20471,21 +19753,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -20494,17 +19773,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 4 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -20523,21 +19802,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -20546,17 +19822,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -20577,21 +19853,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -20600,17 +19873,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 9 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -20631,21 +19904,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -20654,17 +19924,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 10 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -20685,21 +19955,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -20708,17 +19975,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -20739,8 +20006,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -20750,11 +20017,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -20763,17 +20030,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -20794,24 +20061,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -20823,12 +20090,12 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -20872,43 +20139,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Float32Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -20916,25 +20181,22 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 0 @@ -20968,25 +20230,22 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 11 @@ -20996,7 +20255,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -21017,40 +20276,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const -1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -21071,40 +20327,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -21125,41 +20378,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -21180,41 +20433,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -21235,41 +20488,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -21290,41 +20543,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -21342,8 +20595,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 local.get $2 i32.load offset=8 i32.const 2 @@ -21354,46 +20607,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -21407,46 +20659,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 0 @@ -21455,7 +20710,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -21473,47 +20728,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 11 @@ -21522,7 +20776,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -21542,47 +20796,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const -1 @@ -21591,7 +20844,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -21611,47 +20864,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 3 @@ -21660,7 +20912,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -21681,7 +20933,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -21699,8 +20952,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -21709,7 +20962,7 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 @@ -21719,7 +20972,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -21738,14 +20991,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -21757,8 +21010,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -21767,17 +21020,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -21796,14 +21049,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -21815,8 +21068,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -21825,17 +21078,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -21854,14 +21107,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -21873,8 +21126,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -21883,17 +21136,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -21911,48 +21164,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -21964,48 +21216,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22020,27 +21271,24 @@ local.get $2 i32.const 9 call $~lib/typedarray/Float32Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -22049,17 +21297,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -22080,21 +21328,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -22103,17 +21348,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 4 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -22132,21 +21377,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -22155,17 +21397,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -22186,21 +21428,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -22209,17 +21448,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 9 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -22240,21 +21479,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -22263,17 +21499,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 10 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -22294,21 +21530,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -22317,17 +21550,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 11 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -22348,8 +21581,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -22359,11 +21592,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -22372,17 +21605,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -22403,24 +21636,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -22432,12 +21665,12 @@ f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -22481,43 +21714,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Float64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -22525,25 +21756,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 0 @@ -22577,25 +21805,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 11 @@ -22605,7 +21830,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -22626,40 +21851,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const -1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -22680,40 +21902,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -22734,41 +21953,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -22789,41 +22008,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -22844,41 +22063,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -22899,41 +22118,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -22951,8 +22170,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 local.get $2 i32.load offset=8 i32.const 3 @@ -22963,46 +22182,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -23016,46 +22234,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 0 @@ -23064,7 +22285,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -23082,47 +22303,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 11 @@ -23131,7 +22351,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -23151,47 +22371,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const -1 @@ -23200,7 +22419,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -23220,47 +22439,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 3 @@ -23269,7 +22487,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -23290,7 +22508,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -23308,8 +22527,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -23318,7 +22537,7 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 @@ -23328,7 +22547,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -23347,14 +22566,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -23366,8 +22585,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -23376,17 +22595,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -23405,14 +22624,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -23424,8 +22643,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -23434,17 +22653,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -23463,14 +22682,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -23482,8 +22701,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -23492,17 +22711,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -23520,48 +22739,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -23573,48 +22791,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -23630,27 +22847,24 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Float64Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -23659,17 +22873,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -23690,21 +22904,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -23713,17 +22924,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 4 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -23742,21 +22953,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -23765,17 +22973,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -23796,21 +23004,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -23819,17 +23024,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 9 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -23850,21 +23055,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -23873,17 +23075,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 10 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -23904,21 +23106,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -23927,17 +23126,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 11 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -23958,8 +23157,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -23969,11 +23168,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -23982,17 +23181,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -24013,24 +23212,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -24042,12 +23241,12 @@ f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -24259,15 +23458,14 @@ i32.add end end + local.get $2 + i32.add local.set $1 local.get $0 local.get $3 local.get $1 - local.get $2 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $1 ) (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24276,37 +23474,35 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24315,88 +23511,87 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load8_s call $~lib/util/number/itoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add - local.get $3 local.get $5 i32.add + local.get $1 + local.get $4 + i32.add i32.load8_s call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 - local.get $3 + local.get $4 + local.get $6 i32.add i32.load8_s call $~lib/util/number/itoa_buffered @@ -24405,7 +23600,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -24415,16 +23610,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24452,7 +23646,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -24466,32 +23660,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -24508,29 +23701,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -24563,59 +23756,59 @@ local.get $1 i32.const 255 i32.and - local.tee $2 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.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24624,37 +23817,35 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24663,88 +23854,87 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load8_u call $~lib/util/number/utoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add - local.get $3 local.get $5 i32.add + local.get $1 + local.get $4 + i32.add i32.load8_u call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 - local.get $3 + local.get $4 + local.get $6 i32.add i32.load8_u call $~lib/util/number/itoa_buffered @@ -24753,7 +23943,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -24763,16 +23953,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24860,15 +24049,14 @@ i32.add end end + local.get $2 + i32.add local.set $1 local.get $0 local.get $3 local.get $1 - local.get $2 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $1 ) (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24877,39 +24065,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + i32.shr_u + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24918,92 +24104,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load16_s call $~lib/util/number/itoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_s call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_s call $~lib/util/number/itoa_buffered @@ -25012,7 +24197,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25022,16 +24207,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -25054,59 +24238,59 @@ local.get $1 i32.const 65535 i32.and - local.tee $2 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.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) (local $1 i32) @@ -25115,39 +24299,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + i32.shr_u + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25156,92 +24338,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load16_u call $~lib/util/number/utoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_u call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_u call $~lib/util/number/itoa_buffered @@ -25250,7 +24431,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25260,16 +24441,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -25307,47 +24487,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -25366,39 +24545,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25407,92 +24584,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load call $~lib/util/number/itoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered @@ -25501,7 +24677,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25511,16 +24687,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -25538,47 +24713,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -25595,39 +24769,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25636,92 +24808,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load call $~lib/util/number/utoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered @@ -25730,7 +24901,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25740,16 +24911,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -25846,7 +25016,7 @@ local.get $1 i64.const 0 i64.lt_s - local.tee $3 + local.tee $2 if local.get $0 i32.const 45 @@ -25860,7 +25030,7 @@ i64.const 10 i64.lt_u if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -25869,7 +25039,7 @@ i64.const 48 i64.or i64.store16 - local.get $3 + local.get $2 i32.const 1 i32.add return @@ -25880,60 +25050,59 @@ if local.get $1 i32.wrap_i64 + local.tee $3 local.tee $4 - local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $4 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $4 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $4 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $4 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $4 i32.const 100000000 i32.ge_u i32.add end end + local.get $2 + i32.add local.set $2 local.get $0 - local.get $4 - local.get $2 local.get $3 - i32.add - local.tee $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -25988,12 +25157,12 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $2 ) (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -26005,7 +25174,7 @@ (local $7 i32) local.get $0 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=8 i32.const 3 @@ -26029,7 +25198,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $4 + local.tee $7 i32.const 0 i32.lt_s if @@ -26042,10 +25211,10 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $4 + local.get $7 i32.eqz if - local.get $5 + local.get $4 i64.load i64.extend32_s local.set $2 @@ -26080,7 +25249,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $1 select local.tee $2 i64.const 4294967295 @@ -26089,7 +25258,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.wrap_i64 - local.tee $6 + local.tee $3 local.tee $0 i32.const 100000 i32.lt_u @@ -26136,9 +25305,9 @@ i32.add end end - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $4 i32.const 1 i32.shl i32.const 1 @@ -26146,8 +25315,8 @@ local.tee $0 i32.store local.get $0 - local.get $6 - local.get $1 + local.get $3 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -26201,9 +25370,9 @@ i32.add end end - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -26212,10 +25381,10 @@ i32.store local.get $0 local.get $2 - local.get $1 + local.get $3 call $~lib/util/number/utoa64_dec_lut end - local.get $3 + local.get $1 if local.get $0 i32.const 45 @@ -26229,12 +25398,12 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $7 + local.tee $5 i32.const 21 i32.add i32.mul @@ -26249,7 +25418,7 @@ i32.store loop $for-loop|0 local.get $3 - local.get $4 + local.get $7 i32.lt_s if local.get $0 @@ -26260,14 +25429,14 @@ local.get $3 i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $7 + local.get $5 if local.get $0 i32.const 1 @@ -26275,12 +25444,12 @@ local.get $1 i32.add i32.const 9584 - local.get $7 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $7 + local.get $5 i32.add local.set $0 end @@ -26297,10 +25466,10 @@ i32.shl local.get $1 i32.add - local.get $4 + local.get $7 i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered @@ -26410,7 +25579,6 @@ local.get $0 local.get $3 local.get $2 - local.tee $0 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -26465,10 +25633,10 @@ i32.add end end - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $2 ) (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -26478,33 +25646,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -26513,28 +25677,27 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $3 + local.get $7 i32.eqz if - local.get $4 - i64.load - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 i64.eqz if @@ -26543,7 +25706,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 8000 - local.set $0 br $__inlined_func$~lib/util/number/utoa64 end local.get $2 @@ -26553,48 +25715,48 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.wrap_i64 - local.tee $3 local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -26605,10 +25767,10 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 local.get $3 + local.get $0 local.get $1 call $~lib/util/number/utoa32_dec_lut else @@ -26663,107 +25825,109 @@ i32.add end end - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 local.get $2 - local.get $1 + local.get $0 call $~lib/util/number/utoa64_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $5 + local.tee $0 i32.const 20 i32.add i32.mul i32.const 20 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store loop $for-loop|0 local.get $3 - local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $6 + i32.add + local.get $3 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 - local.get $5 + local.set $1 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add i32.const 9584 - local.get $5 + local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $1 i32.add - local.set $0 + local.set $1 end - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $3 br $for-loop|0 end end - local.get $7 - local.get $0 + local.get $5 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add local.tee $0 i32.gt_s if - local.get $1 + local.get $6 local.get $0 call $~lib/string/String#substring local.set $0 @@ -26773,16 +25937,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $6 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 33040 @@ -26797,76 +25960,75 @@ (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i64) (local $13 i64) local.get $2 local.get $1 i64.sub - local.set $10 + local.set $12 local.get $2 i64.const 1 i32.const 0 local.get $3 i32.sub - local.tee $11 + local.tee $10 i64.extend_i32_s local.tee $1 i64.shl - local.tee $12 + local.tee $13 i64.const 1 i64.sub - local.tee $13 + local.tee $11 i64.and local.set $7 local.get $2 local.get $1 i64.shr_u i32.wrap_i64 + local.tee $3 local.tee $6 - local.set $3 - local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $6 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $6 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $6 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $6 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $6 i32.const 100000000 i32.ge_u i32.add @@ -26895,107 +26057,107 @@ 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 $6 + local.get $3 i32.const 1000000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 - local.set $3 - i32.const 0 + local.get $3 local.set $6 + i32.const 0 + local.set $3 br $break|1 end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 local.get $5 + local.get $6 i32.or if local.get $5 @@ -27008,7 +26170,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -27019,16 +26181,16 @@ i32.const 1 i32.sub local.set $9 + local.get $4 local.get $7 - local.get $6 + local.get $3 i64.extend_i32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $4 - i64.le_u + i64.ge_u if local.get $9 global.get $~lib/util/number/_K @@ -27040,7 +26202,7 @@ i32.const 10736 i32.add i64.load32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl local.set $2 @@ -27051,44 +26213,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $6 loop $while-continue|3 + local.get $1 + local.get $12 + i64.lt_u local.get $2 local.get $4 local.get $1 i64.sub i64.le_u - i32.const 0 - local.get $1 - local.get $10 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 - local.get $10 + local.get $12 local.get $1 i64.sub local.get $1 local.get $2 i64.add local.tee $7 - local.get $10 + local.get $12 i64.sub i64.gt_u local.get $7 - local.get $10 + local.get $12 i64.lt_u - select + i32.or else i32.const 0 end if - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 local.get $1 local.get $2 i64.add @@ -27096,8 +26256,8 @@ br $while-continue|3 end end + local.get $0 local.get $6 - local.get $3 i32.store16 local.get $5 return @@ -27105,7 +26265,7 @@ br $while-continue|0 end end - loop $while-continue|4 + loop $while-continue|4 (result i32) local.get $4 i64.const 10 i64.mul @@ -27114,7 +26274,7 @@ i64.const 10 i64.mul local.tee $1 - local.get $11 + local.get $10 i64.extend_i32_s i64.shr_u local.tee $2 @@ -27146,93 +26306,88 @@ i32.const 1 i32.sub local.set $9 - local.get $4 local.get $1 - local.get $13 + local.get $11 i64.and local.tee $7 - i64.le_u - br_if $while-continue|4 - end - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - local.get $10 - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $6 - i32.load16_u - local.set $3 - loop $while-continue|6 - local.get $12 local.get $4 - local.get $1 - i64.sub - i64.le_u + i64.ge_u + br_if $while-continue|4 + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 i32.const 0 - local.get $1 - local.get $2 - i64.lt_u - select - if (result i32) - i32.const 1 - local.get $2 - local.get $1 - i64.sub + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + local.get $12 + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $6 + loop $while-continue|6 local.get $1 - local.get $12 - i64.add - local.tee $7 - local.get $2 - i64.sub - i64.gt_u local.get $2 - local.get $7 - i64.gt_u - select - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.sub - local.set $3 + i64.lt_u + local.get $13 + local.get $4 local.get $1 - local.get $12 - i64.add - local.set $1 - br $while-continue|6 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $2 + local.get $1 + i64.sub + local.get $1 + local.get $13 + i64.add + local.tee $7 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $7 + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $6 + i32.store16 + local.get $5 end - local.get $6 - local.get $3 - i32.store16 - local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -27251,18 +26406,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -27279,27 +26433,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -27321,19 +26474,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -27350,7 +26502,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -27368,7 +26520,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -27379,24 +26531,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -27442,20 +26593,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -27478,20 +26626,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -27499,63 +26646,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -27574,18 +26718,20 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (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 $8 + local.tee $3 if (result f64) local.get $0 i32.const 45 @@ -27602,40 +26748,38 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.set $3 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $3 + local.get $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl i64.add - local.set $2 - local.get $3 - i32.const 1 - local.get $3 - select - i32.const 1075 - i32.sub - local.tee $3 - i32.const 1 - i32.sub - local.get $2 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $4 i64.clz i32.wrap_i64 - local.tee $7 + local.tee $8 i32.sub - local.set $9 - local.get $5 - local.get $7 + local.set $10 + local.get $4 + local.get $8 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -27645,25 +26789,25 @@ i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $8 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $3 - local.get $7 - i32.sub local.get $9 + local.get $8 + i32.sub + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $9 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -27672,9 +26816,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $3 + local.tee $9 local.get $1 - local.get $3 + local.get $9 f64.convert_i32_s f64.ne i32.add @@ -27682,18 +26826,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $3 + local.tee $9 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $7 + local.get $10 i32.const 9864 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $3 + local.get $9 i32.const 1 i32.shl i32.const 10560 @@ -27711,55 +26855,78 @@ local.get $2 i64.const 32 i64.shr_u - local.tee $14 - global.get $~lib/util/number/_frc_pow local.tee $5 + global.get $~lib/util/number/_frc_pow + local.tee $7 i64.const 4294967295 i64.and + local.tee $12 local.tee $2 - local.tee $4 i64.mul - local.get $4 + local.get $2 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $5 local.set $13 global.get $~lib/util/number/_frc_plus local.tee $4 i64.const 4294967295 i64.and - local.set $6 + local.set $2 local.get $4 i64.const 32 i64.shr_u - local.tee $10 - local.get $2 + local.tee $6 + local.get $12 i64.mul local.get $2 - local.get $6 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add + local.set $14 + global.get $~lib/util/number/_frc_minus + local.tee $15 + i64.const 4294967295 + i64.and local.set $4 - local.get $5 - local.get $10 + local.get $15 + i64.const 32 + i64.shr_u + local.tee $15 + local.get $12 i64.mul local.get $4 + local.get $12 + i64.mul i64.const 32 i64.shr_u i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 local.get $5 - local.get $6 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $16 + local.tee $7 i64.mul - local.get $4 + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $11 + i64.mul + local.get $13 i64.const 4294967295 i64.and i64.add @@ -27768,44 +26935,17 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $4 - global.get $~lib/util/number/_frc_minus - local.tee $6 - i64.const 4294967295 - i64.and - local.set $10 local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $2 + local.get $16 i64.mul - local.get $2 - local.get $10 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $2 - local.get $8 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 local.get $14 - i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add - local.get $11 - local.get $13 + local.get $2 + local.get $16 i64.mul - local.get $12 + local.get $14 i64.const 4294967295 i64.and i64.add @@ -27814,24 +26954,26 @@ i64.const 32 i64.shr_u i64.add - local.get $4 + i64.const 1 + i64.sub + local.tee $2 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $8 i32.add i32.const -64 i32.sub - local.get $4 - local.get $5 - local.get $6 - i64.mul local.get $2 + local.get $15 + local.get $16 + i64.mul + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $5 - local.get $10 + local.get $4 + local.get $16 i64.mul - local.get $2 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -27843,13 +26985,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $3 call $~lib/util/number/genDigits - local.get $8 + local.get $3 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $3 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -27929,39 +27071,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + block $__inlined_func$~lib/util/string/joinFloatArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -27970,14 +27110,13 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 f32.load f64.promote_f32 call $~lib/util/number/dtoa @@ -27985,38 +27124,38 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 28 i32.add i32.mul i32.const 28 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add f32.load f64.promote_f32 @@ -28024,40 +27163,40 @@ local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add f32.load f64.promote_f32 @@ -28067,7 +27206,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -28077,16 +27216,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -28095,39 +27233,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + block $__inlined_func$~lib/util/string/joinFloatArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -28136,92 +27272,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 f64.load call $~lib/util/number/dtoa local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 28 i32.add i32.mul i32.const 28 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 3 i32.shl - local.get $3 + local.get $4 i32.add f64.load call $~lib/util/number/dtoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 3 i32.shl - local.get $3 + local.get $4 i32.add f64.load call $~lib/util/number/dtoa_buffered @@ -28230,7 +27365,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -28240,16 +27375,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -28269,7 +27403,7 @@ local.set $1 end i32.const -1 - local.set $3 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28294,7 +27428,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $2 + local.tee $3 i32.gt_u if i32.const 1360 @@ -28304,15 +27438,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 i32.lt_s if - local.get $3 + local.get $2 i32.const -1 i32.eq if (result i32) - local.get $2 + local.get $3 local.get $1 i32.sub else @@ -28323,11 +27457,11 @@ call $~lib/builtins/abort unreachable end - local.set $3 + local.set $2 else - local.get $2 - local.get $1 local.get $3 + local.get $1 + local.get $2 i32.add i32.lt_s if @@ -28343,18 +27477,21 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 i32.store - local.get $2 local.get $0 - call $~lib/rt/itcms/__link - local.get $2 + if + local.get $3 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - i32.store offset=8 local.get $2 + i32.store offset=8 + local.get $3 local.get $0 local.get $1 i32.add @@ -28363,7 +27500,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (local $1 i32) @@ -28384,25 +27521,25 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $2 i32.const 11012 i32.load - local.set $2 + local.set $3 i32.const 11020 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 local.get $1 + local.get $2 i32.add local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.store8 @@ -28576,8 +27713,8 @@ ) (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) local.get $2 i32.const 0 i32.lt_s @@ -28613,7 +27750,7 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $5 local.get $1 i32.load offset=8 i32.const 3 @@ -28630,10 +27767,10 @@ local.get $3 i32.const 3 i32.shl - local.get $4 + local.get $5 i32.add i64.load - local.tee $5 + local.tee $4 i32.wrap_i64 local.tee $0 i32.const 31 @@ -28641,7 +27778,7 @@ i32.const -1 i32.xor i64.extend_i32_s - local.get $5 + local.get $4 i32.const 255 local.get $0 i32.sub @@ -28760,27 +27897,27 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $2 i32.const 11012 i32.load - local.set $2 + local.set $3 i32.const 11020 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.store16 @@ -28957,25 +28094,25 @@ i32.load offset=4 i32.const 14 i32.add - local.set $0 + local.set $2 i32.const 11268 i32.load - local.set $2 + local.set $3 i32.const 11276 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_s i32.store16 @@ -29223,25 +28360,25 @@ i32.load offset=4 i32.const 28 i32.add - local.set $0 + local.set $2 i32.const 11268 i32.load - local.set $2 + local.set $3 i32.const 11276 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_s i32.store @@ -29274,27 +28411,27 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $2 i32.const 11012 i32.load - local.set $2 + local.set $3 i32.const 11020 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i64.load32_s i64.store @@ -29471,25 +28608,25 @@ i32.load offset=4 i32.const 56 i32.add - local.set $0 + local.set $2 i32.const 11268 i32.load - local.set $2 + local.set $3 i32.const 11276 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i64.load8_s i64.store @@ -29512,13 +28649,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -29718,20 +28855,20 @@ i32.add local.tee $3 i32.load8_s - local.set $6 + local.set $5 local.get $3 local.get $0 local.get $2 i32.add - local.tee $5 + 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 - local.get $6 i32.store8 local.get $2 i32.const 1 @@ -29893,8 +29030,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -29908,11 +29045,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -29920,87 +29056,86 @@ end local.get $0 i32.load8_s - local.set $3 + local.set $1 local.get $0 i32.load8_s offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store8 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load8_s offset=2 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store8 offset=1 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store8 offset=2 end local.get $0 i32.load8_s - local.set $3 + local.set $1 local.get $0 i32.load8_s offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -30015,16 +29150,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -30033,7 +29176,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -30044,48 +29187,56 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -30093,23 +29244,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -30119,11 +29270,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -30133,33 +29284,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -30167,27 +29316,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -30195,15 +29344,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -30214,7 +29363,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -30226,13 +29375,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -30243,9 +29392,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -30279,13 +29428,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -30485,20 +29634,20 @@ i32.add local.tee $3 i32.load8_u - local.set $6 + local.set $5 local.get $3 local.get $0 local.get $2 i32.add - local.tee $5 + 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 - local.get $6 i32.store8 local.get $2 i32.const 1 @@ -30660,8 +29809,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -30675,11 +29824,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -30687,87 +29835,86 @@ end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store8 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load8_u offset=2 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store8 offset=1 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -30782,16 +29929,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -30800,7 +29955,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -30811,48 +29966,56 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -30860,23 +30023,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -30886,11 +30049,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -30900,33 +30063,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -30934,27 +30095,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -30962,15 +30123,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -30981,7 +30142,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -30993,13 +30154,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -31010,9 +30171,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -31056,13 +30217,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -31284,22 +30445,22 @@ i32.add local.tee $3 i32.load16_s - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.tee $5 + 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 - local.get $6 i32.store16 local.get $2 i32.const 1 @@ -31418,18 +30579,18 @@ local.get $4 i32.add i32.load16_s - local.set $8 + local.set $7 local.get $2 i32.const 1 i32.shl local.get $4 i32.add i32.load16_s - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -31441,7 +30602,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $6 i32.const 1 @@ -31453,7 +30614,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $2 i32.const 1 @@ -31478,8 +30639,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -31493,11 +30654,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -31505,87 +30665,86 @@ end local.get $0 i32.load16_s - local.set $3 + local.set $1 local.get $0 i32.load16_s offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store16 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load16_s offset=4 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store16 offset=2 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store16 offset=4 end local.get $0 i32.load16_s - local.set $3 + local.set $1 local.get $0 i32.load16_s offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store16 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store16 offset=2 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -31600,16 +30759,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -31618,7 +30785,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -31629,50 +30796,58 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -31680,23 +30855,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -31706,11 +30881,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -31720,33 +30895,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -31754,27 +30927,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -31782,15 +30955,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -31801,7 +30974,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -31813,13 +30986,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -31830,9 +31003,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -31866,13 +31039,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -32094,22 +31267,22 @@ i32.add local.tee $3 i32.load16_u - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.tee $5 + 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 - local.get $6 i32.store16 local.get $2 i32.const 1 @@ -32228,18 +31401,18 @@ local.get $4 i32.add i32.load16_u - local.set $8 + local.set $7 local.get $2 i32.const 1 i32.shl local.get $4 i32.add i32.load16_u - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -32251,7 +31424,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $6 i32.const 1 @@ -32263,7 +31436,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $2 i32.const 1 @@ -32288,8 +31461,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -32303,11 +31476,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -32315,87 +31487,86 @@ end local.get $0 i32.load16_u - local.set $3 + local.set $1 local.get $0 i32.load16_u offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store16 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load16_u offset=4 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store16 offset=2 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store16 offset=4 end local.get $0 i32.load16_u - local.set $3 + local.set $1 local.get $0 i32.load16_u offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store16 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store16 offset=2 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -32410,16 +31581,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -32428,7 +31607,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -32439,50 +31618,58 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -32490,23 +31677,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -32516,11 +31703,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -32530,33 +31717,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -32564,27 +31749,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -32592,15 +31777,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -32611,7 +31796,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -32623,13 +31808,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -32640,9 +31825,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -32686,13 +31871,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -32914,22 +32099,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -33048,18 +32233,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -33071,7 +32256,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -33083,7 +32268,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -33108,8 +32293,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -33123,11 +32308,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -33135,87 +32319,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -33230,16 +32413,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -33248,7 +32439,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -33259,50 +32450,58 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -33310,23 +32509,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -33336,11 +32535,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -33350,33 +32549,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -33384,27 +32581,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -33412,15 +32609,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -33431,7 +32628,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -33443,13 +32640,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -33460,9 +32657,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -33490,13 +32687,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -33718,22 +32915,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -33852,18 +33049,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -33875,7 +33072,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -33887,7 +33084,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -33912,8 +33109,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -33927,11 +33124,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -33939,87 +33135,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + 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 $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -34034,16 +33229,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -34052,7 +33255,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -34063,50 +33266,58 @@ 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/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -34114,23 +33325,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -34140,11 +33351,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -34154,33 +33365,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -34188,27 +33397,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -34216,15 +33425,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -34235,7 +33444,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -34247,13 +33456,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -34264,9 +33473,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -34290,41 +33499,41 @@ (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 i64) - (local $8 i32) + (local $7 i32) + (local $8 i64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 i64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 i64.load @@ -34332,7 +33541,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34341,10 +33550,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -34360,10 +33569,10 @@ local.get $0 i32.add i64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -34376,7 +33585,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i64.store offset=16 local.get $3 i32.const 1 @@ -34438,10 +33647,10 @@ i32.add local.get $6 i64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -34449,8 +33658,8 @@ (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 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) local.get $1 local.get $2 i32.eq @@ -34491,9 +33700,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 i64.load offset=8 - local.get $7 + local.get $6 i64.load i32.const 2 global.set $~argumentsLength @@ -34534,14 +33743,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 i64.load i64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 i64.store local.get $2 @@ -34720,12 +33929,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) (local $12 i32) - (local $13 i64) - (local $14 i64) + (local $13 i32) + (local $14 i32) + (local $15 i32) local.get $1 i32.const 48 i32.le_s @@ -34739,11 +33949,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -34751,17 +33960,17 @@ end local.get $0 i64.load - local.set $13 + local.set $11 local.get $0 i64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34770,21 +33979,20 @@ local.tee $1 select i64.store - local.get $13 - local.get $14 - local.get $1 - select - local.set $13 local.get $0 i64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34794,25 +34002,25 @@ select i64.store offset=8 local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $13 + local.set $10 local.get $0 i64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34822,8 +34030,8 @@ select i64.store local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=8 @@ -34831,7 +34039,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -34843,43 +34051,59 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $11 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $10 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 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/__alloc - local.set $9 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 @@ -34888,7 +34112,7 @@ local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -34903,26 +34127,26 @@ i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 + local.get $7 local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -34931,9 +34155,9 @@ i32.lt_s if local.get $0 - local.get $6 + local.get $5 local.get $12 - local.get $6 + local.get $5 i32.const 31 i32.add local.tee $1 @@ -34941,13 +34165,13 @@ local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 @@ -34956,43 +34180,41 @@ i32.const 1 i32.add i64.extend_i32_u - local.tee $14 + local.tee $9 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $14 + local.get $9 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $10 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -35000,26 +34222,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $9 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $11 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -35028,14 +34250,14 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -35047,7 +34269,7 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load local.tee $1 @@ -35059,13 +34281,13 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $14 i32.add i32.load i32.const 1 i32.add local.get $12 - local.get $9 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -35076,9 +34298,9 @@ br $for-loop|4 end end - local.get $9 + local.get $15 call $~lib/rt/tlsf/__free - local.get $11 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) @@ -35102,41 +34324,41 @@ (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 i64) - (local $8 i32) + (local $7 i32) + (local $8 i64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 i64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 i64.load @@ -35144,7 +34366,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35153,10 +34375,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -35172,10 +34394,10 @@ local.get $0 i32.add i64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -35188,7 +34410,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i64.store offset=16 local.get $3 i32.const 1 @@ -35250,10 +34472,10 @@ i32.add local.get $6 i64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -35261,8 +34483,8 @@ (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 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) local.get $1 local.get $2 i32.eq @@ -35303,9 +34525,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 i64.load offset=8 - local.get $7 + local.get $6 i64.load i32.const 2 global.set $~argumentsLength @@ -35346,14 +34568,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 i64.load i64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 i64.store local.get $2 @@ -35532,12 +34754,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) (local $12 i32) - (local $13 i64) - (local $14 i64) + (local $13 i32) + (local $14 i32) + (local $15 i32) local.get $1 i32.const 48 i32.le_s @@ -35551,11 +34774,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -35563,17 +34785,17 @@ end local.get $0 i64.load - local.set $13 + local.set $11 local.get $0 i64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35582,21 +34804,20 @@ local.tee $1 select i64.store - local.get $13 - local.get $14 - local.get $1 - select - local.set $13 local.get $0 i64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35606,25 +34827,25 @@ select i64.store offset=8 local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $13 + local.set $10 local.get $0 i64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35634,8 +34855,8 @@ select i64.store local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=8 @@ -35643,7 +34864,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -35655,43 +34876,59 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $11 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $10 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 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/__alloc - local.set $9 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 @@ -35700,7 +34937,7 @@ local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -35715,26 +34952,26 @@ i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 + local.get $7 local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -35743,9 +34980,9 @@ i32.lt_s if local.get $0 - local.get $6 + local.get $5 local.get $12 - local.get $6 + local.get $5 i32.const 31 i32.add local.tee $1 @@ -35753,13 +34990,13 @@ local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 @@ -35768,43 +35005,41 @@ i32.const 1 i32.add i64.extend_i32_u - local.tee $14 + local.tee $9 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $14 + local.get $9 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $10 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -35812,26 +35047,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $9 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $11 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -35840,14 +35075,14 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -35859,7 +35094,7 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load local.tee $1 @@ -35871,13 +35106,13 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $14 i32.add i32.load i32.const 1 i32.add local.get $12 - local.get $9 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -35888,9 +35123,9 @@ br $for-loop|4 end end - local.get $9 + local.get $15 call $~lib/rt/tlsf/__free - local.get $11 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) @@ -35914,41 +35149,41 @@ (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 f32) - (local $8 i32) + (local $7 i32) + (local $8 f32) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 2 i32.shl local.get $0 i32.add local.tee $3 f32.load offset=4 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f32.load @@ -35956,7 +35191,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -35965,10 +35200,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -35984,10 +35219,10 @@ local.get $0 i32.add f32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -36000,7 +35235,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f32.store offset=8 local.get $3 i32.const 1 @@ -36062,10 +35297,10 @@ i32.add local.get $6 f32.store offset=4 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -36073,8 +35308,8 @@ (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 f32) - (local $7 i32) + (local $6 i32) + (local $7 f32) local.get $1 local.get $2 i32.eq @@ -36115,9 +35350,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f32.load offset=4 - local.get $7 + local.get $6 f32.load i32.const 2 global.set $~argumentsLength @@ -36158,14 +35393,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f32.load f32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f32.store local.get $2 @@ -36344,13 +35579,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f32) + (local $10 f32) + (local $11 f32) (local $12 i32) (local $13 i32) - (local $14 f32) - (local $15 f32) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -36364,11 +35600,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -36376,17 +35611,17 @@ end local.get $0 f32.load - local.set $15 + local.set $11 local.get $0 f32.load offset=4 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36395,21 +35630,20 @@ local.tee $1 select f32.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f32.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36419,25 +35653,25 @@ select f32.store offset=4 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $15 + local.set $10 local.get $0 f32.load offset=4 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36447,8 +35681,8 @@ select f32.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=4 @@ -36456,7 +35690,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -36468,52 +35702,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 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/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -36522,32 +35772,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -36556,68 +35806,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -36625,26 +35873,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -36653,14 +35901,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -36672,7 +35920,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -36684,13 +35932,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -36701,9 +35949,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) @@ -36774,12 +36022,20 @@ end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 @@ -36787,7 +36043,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -36803,45 +36059,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Int8Array#__set @@ -36858,89 +36113,92 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $0 - i32.load offset=8 - local.set $5 local.get $1 + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $5 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $7 loop $for-loop|0 + local.get $3 local.get $4 - local.get $5 i32.lt_s if - local.get $4 - local.get $9 + local.get $3 + local.get $7 i32.add i32.load8_s - local.set $7 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $6 + local.get $3 + local.get $2 i32.const 3952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $5 i32.add - local.get $7 + local.get $6 i32.store8 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $1 - local.get $6 - local.get $2 + local.get $8 + local.get $5 + local.get $0 call $~lib/rt/itcms/__renew - local.tee $0 + local.tee $1 i32.store local.get $1 + if + local.get $8 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $8 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $8 i32.store offset=8 - local.get $0 + local.get $8 i32.load offset=4 - local.get $0 + local.get $8 i32.load i32.sub if @@ -36951,7 +36209,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -36963,7 +36221,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 3 @@ -36976,7 +36234,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 @@ -36989,7 +36247,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 5 @@ -37025,45 +36283,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint8Array#__set @@ -37080,89 +36337,92 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $0 - i32.load offset=8 - local.set $5 local.get $1 + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $5 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $7 loop $for-loop|0 + local.get $3 local.get $4 - local.get $5 i32.lt_s if - local.get $4 - local.get $9 + local.get $3 + local.get $7 i32.add i32.load8_u - local.set $7 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $6 + local.get $3 + local.get $2 i32.const 3984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $5 i32.add - local.get $7 + local.get $6 i32.store8 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $1 - local.get $6 - local.get $2 + local.get $8 + local.get $5 + local.get $0 call $~lib/rt/itcms/__renew - local.tee $0 + local.tee $1 i32.store local.get $1 + if + local.get $8 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $8 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $8 i32.store offset=8 - local.get $0 + local.get $8 i32.load offset=4 - local.get $0 + local.get $8 i32.load i32.sub if @@ -37173,7 +36433,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -37185,7 +36445,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 3 @@ -37198,7 +36458,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 @@ -37211,7 +36471,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 5 @@ -37247,45 +36507,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set @@ -37302,89 +36561,92 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $0 - i32.load offset=8 - local.set $5 local.get $1 + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $5 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $7 loop $for-loop|0 + local.get $3 local.get $4 - local.get $5 i32.lt_s if - local.get $4 - local.get $9 + local.get $3 + local.get $7 i32.add i32.load8_u - local.set $7 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $6 + local.get $3 + local.get $2 i32.const 4016 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $5 i32.add - local.get $7 + local.get $6 i32.store8 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $1 - local.get $6 - local.get $2 + local.get $8 + local.get $5 + local.get $0 call $~lib/rt/itcms/__renew - local.tee $0 + local.tee $1 i32.store local.get $1 + if + local.get $8 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $8 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $8 i32.store offset=8 - local.get $0 + local.get $8 i32.load offset=4 - local.get $0 + local.get $8 i32.load i32.sub if @@ -37395,7 +36657,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -37407,7 +36669,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 @@ -37420,7 +36682,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 @@ -37433,7 +36695,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 @@ -37469,45 +36731,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Int16Array#__set @@ -37524,19 +36785,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -37546,9 +36808,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -37557,7 +36819,7 @@ local.get $4 i32.const 1 i32.shl - local.get $9 + local.get $8 i32.add i32.load16_s local.set $7 @@ -37565,17 +36827,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4048 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.shl local.get $6 @@ -37590,34 +36852,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 1 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -37628,7 +36892,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u @@ -37642,7 +36906,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 3 @@ -37655,7 +36919,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 @@ -37668,7 +36932,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 5 @@ -37704,45 +36968,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint16Array#__set @@ -37759,19 +37022,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -37781,9 +37045,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -37792,7 +37056,7 @@ local.get $4 i32.const 1 i32.shl - local.get $9 + local.get $8 i32.add i32.load16_u local.set $7 @@ -37800,17 +37064,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4080 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.shl local.get $6 @@ -37825,34 +37089,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 1 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -37863,7 +37129,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u @@ -37877,7 +37143,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 3 @@ -37890,7 +37156,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 @@ -37903,7 +37169,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 5 @@ -37939,45 +37205,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Int32Array#__set @@ -37994,19 +37259,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38016,9 +37282,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38027,7 +37293,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add i32.load local.set $7 @@ -38035,17 +37301,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4112 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 2 i32.shl local.get $6 @@ -38060,34 +37326,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 2 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38098,7 +37366,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -38112,7 +37380,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -38125,7 +37393,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 @@ -38138,7 +37406,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 5 @@ -38174,45 +37442,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint32Array#__set @@ -38229,19 +37496,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38251,9 +37519,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38262,7 +37530,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add i32.load local.set $7 @@ -38270,17 +37538,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 2 i32.shl local.get $6 @@ -38295,34 +37563,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 2 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38333,7 +37603,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -38347,7 +37617,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 3 @@ -38360,7 +37630,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 @@ -38373,7 +37643,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 5 @@ -38409,45 +37679,44 @@ (local $6 i32) (local $7 i64) (local $8 i32) - (local $9 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 3 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 5 i64.const 5 call $~lib/typedarray/Int64Array#__set @@ -38464,19 +37733,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38486,9 +37756,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38497,7 +37767,7 @@ local.get $4 i32.const 3 i32.shl - local.get $9 + local.get $8 i32.add i64.load local.set $7 @@ -38505,17 +37775,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4176 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 3 i32.shl local.get $6 @@ -38530,34 +37800,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 3 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38568,7 +37840,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -38582,7 +37854,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 3 @@ -38595,7 +37867,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 @@ -38608,7 +37880,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 5 @@ -38644,45 +37916,44 @@ (local $6 i32) (local $7 i64) (local $8 i32) - (local $9 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 3 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 5 i64.const 5 call $~lib/typedarray/Uint64Array#__set @@ -38699,19 +37970,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38721,9 +37993,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38732,7 +38004,7 @@ local.get $4 i32.const 3 i32.shl - local.get $9 + local.get $8 i32.add i64.load local.set $7 @@ -38740,17 +38012,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4208 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 3 i32.shl local.get $6 @@ -38765,34 +38037,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 3 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38803,7 +38077,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -38817,7 +38091,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 3 @@ -38830,7 +38104,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 @@ -38843,7 +38117,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 5 @@ -38879,45 +38153,44 @@ (local $6 i32) (local $7 f32) (local $8 i32) - (local $9 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 3 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 5 f32.const 5 call $~lib/typedarray/Float32Array#__set @@ -38934,19 +38207,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38956,9 +38230,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38967,7 +38241,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add f32.load local.set $7 @@ -38975,17 +38249,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4240 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 2 i32.shl local.get $6 @@ -39000,34 +38274,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 2 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -39038,7 +38314,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -39052,7 +38328,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 @@ -39065,7 +38341,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 @@ -39078,7 +38354,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 5 @@ -39114,45 +38390,44 @@ (local $6 i32) (local $7 f64) (local $8 i32) - (local $9 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Float64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 3 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 5 f64.const 5 call $~lib/typedarray/Float64Array#__set @@ -39169,19 +38444,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -39191,9 +38467,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -39202,7 +38478,7 @@ local.get $4 i32.const 3 i32.shl - local.get $9 + local.get $8 i32.add f64.load local.set $7 @@ -39210,17 +38486,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4272 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 3 i32.shl local.get $6 @@ -39235,34 +38511,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 3 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -39273,7 +38551,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -39287,7 +38565,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 3 @@ -39300,7 +38578,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 @@ -39313,7 +38591,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -39758,1736 +39036,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $5 - 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 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 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 $5 - 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=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - local.set $7 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - i32.store - local.get $6 - local.get $7 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - 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 - local.get $1 - 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 - local.get $1 - 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 - local.get $1 - 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 20 - 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) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $5 - 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 - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 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 $5 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - local.set $7 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - i32.store - local.get $6 - local.get $7 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - 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 - local.get $1 - i32.const 1 - 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 - local.get $1 - 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 - local.get $1 - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $5 - local.get $0 - i32.const 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 - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - i64.store - local.get $7 - local.get $8 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 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 $5 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $8 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 - local.get $1 - 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 - local.get $1 - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $5 - local.get $0 - i32.const 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 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - i64.store - local.get $7 - local.get $8 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 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 $5 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $8 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__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 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__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 - local.get $1 - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $5 - local.get $0 - i32.const 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 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - f32.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - f32.load - f32.store - local.get $7 - local.get $8 - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float32Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 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 $5 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - f32.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - f32.load - f32.store - local.get $6 - local.get $8 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $5 - local.get $0 - i32.const 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 - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - f64.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - f64.load - f64.store - local.get $7 - local.get $8 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 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 $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - f64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - f64.load - f64.store - local.get $6 - local.get $8 - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - 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 - local.get $1 - 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 - local.get $1 - 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 - local.get $1 - 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 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -41613,119 +39161,120 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - 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=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 11312 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 - local.get $0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + 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=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Int8Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 11312 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + local.get $9 i32.load offset=8 i32.const 11100 i32.load @@ -41733,7 +39282,7 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 3 i32.add @@ -41743,37 +39292,37 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_s else i32.const 0 end i32.store8 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -41782,15 +39331,15 @@ i32.const 15 i32.const 11392 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 @@ -41801,15 +39350,13 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 - local.get $0 + local.get $9 i32.load offset=8 i32.const 11196 i32.load @@ -41817,11 +39364,11 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 2 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -41829,35 +39376,35 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if + local.get $0 local.get $1 - local.get $4 i32.add - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_s else i32.const 0 end i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -41866,35 +39413,35 @@ i32.const 15 i32.const 11456 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=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 15 i32.const 11488 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -41974,148 +39521,149 @@ 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/Uint8Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set + 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 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - 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=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11520 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) block $folding-inner0 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Uint8Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 11520 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + local.get $9 i32.load offset=8 i32.const 11100 i32.load @@ -42123,7 +39671,7 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 3 i32.add @@ -42133,37 +39681,37 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_u else i32.const 0 end i32.store8 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -42172,15 +39720,15 @@ i32.const 63 i32.const 11600 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 @@ -42191,15 +39739,13 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 - local.get $0 + local.get $9 i32.load offset=8 i32.const 11196 i32.load @@ -42207,11 +39753,11 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 2 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -42219,35 +39765,35 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if + local.get $0 local.get $1 - local.get $4 i32.add - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_u else i32.const 0 end i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -42256,35 +39802,35 @@ i32.const 63 i32.const 11664 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=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 63 i32.const 11696 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -42391,139 +39937,140 @@ (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + (local $2 f32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f32) - (local $10 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $9 i32) + (local $10 i32) + (local $11 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i64.const 0 + i64.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=16 + local.get $4 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $7 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 i32.const 11020 i32.load - local.get $1 + local.get $8 i32.load offset=8 i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 - local.set $6 + local.set $9 i32.const 11012 i32.load - local.set $7 + local.set $10 i32.const 11020 i32.load - local.set $8 + local.set $11 loop $for-loop|0 - local.get $0 - local.get $8 + local.get $1 + local.get $11 i32.lt_s if - local.get $0 - local.get $6 + local.get $1 + local.get $9 i32.add - i32.const 255 - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $10 i32.add i32.load local.tee $5 + i32.const 255 + local.get $5 i32.sub i32.const 31 i32.shr_s - local.get $5 i32.or local.get $5 i32.const 31 @@ -42532,10 +40079,10 @@ i32.xor i32.and i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -42544,19 +40091,19 @@ i32.const 63 i32.const 11728 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 + local.get $8 local.get $1 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $8 i32.load offset=8 i32.const 11100 i32.load @@ -42564,40 +40111,40 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 i32.const 3 i32.add - local.set $6 + local.set $5 i32.const 11092 i32.load - local.set $7 + local.set $9 i32.const 11100 i32.load - local.set $8 + local.set $10 loop $for-loop|04 - local.get $0 - local.get $8 + local.get $1 + local.get $10 i32.lt_s if - local.get $0 - local.get $6 + local.get $1 + local.get $5 i32.add - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add f32.load - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $9 + local.get $2 f32.min f32.max i32.trunc_f32_u @@ -42605,10 +40152,10 @@ i32.const 0 end i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|04 end end @@ -42617,15 +40164,15 @@ i32.const 63 i32.const 11824 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 + local.get $8 local.get $1 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - local.get $3 + local.get $8 + local.get $6 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 10 @@ -42633,19 +40180,17 @@ i32.const 63 i32.const 11856 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 + local.get $8 local.get $1 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $0 - local.get $1 + local.get $8 i32.load offset=8 i32.const 11196 i32.load @@ -42653,40 +40198,40 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 i32.const 2 i32.add - local.set $5 + local.set $1 i32.const 11188 i32.load - local.set $6 + local.set $5 i32.const 11196 i32.load - local.set $7 + local.set $6 loop $for-loop|08 local.get $0 - local.get $7 + local.get $6 i32.lt_s if local.get $0 - local.get $5 + local.get $1 i32.add local.get $0 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add f64.load - local.tee $10 - local.get $10 + local.tee $3 + local.get $3 f64.sub f64.const 0 f64.eq if (result i32) f64.const 0 f64.const 255 - local.get $10 + local.get $3 f64.min f64.max i32.trunc_f64_u @@ -42710,13 +40255,13 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $1 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - local.get $2 + local.get $8 + local.get $7 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $1 + local.get $8 local.get $4 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> @@ -42725,7 +40270,7 @@ i32.store offset=16 i32.const 0 local.set $0 - local.get $1 + local.get $8 i32.load offset=8 i32.const 11276 i32.load @@ -42733,11 +40278,11 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 i32.const 7 i32.add - local.set $3 + local.set $1 i32.const 11268 i32.load local.set $4 @@ -42750,20 +40295,20 @@ i32.lt_s if local.get $0 - local.get $3 + local.get $1 i32.add - i32.const 255 local.get $0 local.get $4 i32.add i32.load8_s - local.tee $2 + local.tee $6 + i32.const 255 + local.get $6 i32.sub i32.const 31 i32.shr_s - local.get $2 i32.or - local.get $2 + local.get $6 i32.const 31 i32.shr_s i32.const -1 @@ -42786,7 +40331,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $1 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer @@ -42829,7 +40374,7 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -42843,24 +40388,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 1 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load16_s - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load16_s - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -42870,9 +40415,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_s - local.get $3 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -42901,129 +40446,130 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - 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=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 11952 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Int16Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 11952 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 6 i32.add @@ -43033,39 +40579,39 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 i32.const 1 i32.shl local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_s else i32.const 0 end i32.store16 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -43074,15 +40620,15 @@ i32.const 64 i32.const 12048 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 @@ -43093,29 +40639,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 4 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -43123,37 +40667,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $4 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_s else i32.const 0 end i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -43162,35 +40706,35 @@ i32.const 64 i32.const 12144 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=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 64 i32.const 12192 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43232,7 +40776,7 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -43246,24 +40790,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 1 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load16_u - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load16_u - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -43273,9 +40817,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_u - local.get $3 + local.get $5 f64.convert_i32_u f64.const 0 f64.const 0 @@ -43304,129 +40848,130 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - 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=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12240 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Uint16Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12240 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 6 i32.add @@ -43436,39 +40981,39 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 i32.const 1 i32.shl local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_u else i32.const 0 end i32.store16 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -43477,15 +41022,15 @@ i32.const 65 i32.const 12336 call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 @@ -43496,29 +41041,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 4 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -43526,37 +41069,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $4 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_u else i32.const 0 end i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -43565,35 +41108,35 @@ i32.const 65 i32.const 12432 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=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 65 i32.const 12480 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43635,7 +41178,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -43649,24 +41192,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -43676,9 +41219,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_s - local.get $3 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -43707,174 +41250,175 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $8 i32) + (local $9 i32) (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $11 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12528 - call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Int32Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12528 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $9 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 12 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $10 i32.const 11100 i32.load - local.set $10 + local.set $11 loop $for-loop|0 - local.get $4 - local.get $10 + local.get $1 + local.get $11 i32.lt_s if - local.get $7 - local.get $4 + local.get $1 i32.const 2 i32.shl - local.tee $3 + local.tee $8 + local.get $10 i32.add f32.load - local.set $8 - local.get $3 - local.get $6 - i32.add - local.get $8 + local.set $4 + local.get $7 local.get $8 + i32.add + local.get $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_s else i32.const 0 end i32.store - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end @@ -43883,15 +41427,15 @@ i32.const 16 i32.const 12640 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=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $9 + local.get $6 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 2 @@ -43902,29 +41446,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $3 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -43932,37 +41474,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_s else i32.const 0 end i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -43971,35 +41513,35 @@ i32.const 16 i32.const 12768 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=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int32Array#set<~lib/array/Array> i32.const 10 i32.const 2 i32.const 16 i32.const 12832 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44041,7 +41583,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -44055,24 +41597,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -44082,9 +41624,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_u - local.get $3 + local.get $5 f64.convert_i32_u f64.const 0 f64.const 0 @@ -44113,174 +41655,175 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $8 i32) + (local $9 i32) (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $11 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12896 - call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Uint32Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 12896 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $9 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 12 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $10 i32.const 11100 i32.load - local.set $10 + local.set $11 loop $for-loop|0 - local.get $4 - local.get $10 + local.get $1 + local.get $11 i32.lt_s if - local.get $7 - local.get $4 + local.get $1 i32.const 2 i32.shl - local.tee $3 + local.tee $8 + local.get $10 i32.add f32.load - local.set $8 - local.get $3 - local.get $6 - i32.add - local.get $8 + local.set $4 + local.get $7 local.get $8 + i32.add + local.get $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_u else i32.const 0 end i32.store - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end @@ -44289,15 +41832,15 @@ i32.const 66 i32.const 13008 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=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $9 + local.get $6 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 2 @@ -44308,29 +41851,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $3 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -44338,37 +41879,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_u else i32.const 0 end i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -44377,35 +41918,35 @@ i32.const 66 i32.const 13136 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=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int32Array#set<~lib/array/Array> i32.const 10 i32.const 2 i32.const 66 i32.const 13200 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44520,171 +42061,172 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f64) + (local $5 f32) (local $6 i32) (local $7 i32) - (local $8 f64) - (local $9 f32) - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - 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=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 13264 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Int64Array#constructor + local.tee $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 13264 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $8 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 24 i32.add - local.set $4 + local.set $9 i32.const 11092 i32.load - local.set $6 + local.set $10 i32.const 11100 i32.load - local.set $7 + local.set $6 loop $for-loop|0 - local.get $2 - local.get $7 + local.get $1 + local.get $6 i32.lt_s if - local.get $2 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $9 i32.add - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $10 i32.add f32.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f32.sub f32.const 0 f32.eq if (result i64) - local.get $9 + local.get $5 i64.trunc_f32_s else i64.const 0 end i64.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -44693,15 +42235,15 @@ i32.const 67 i32.const 13424 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 - local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 + local.get $8 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 @@ -44712,67 +42254,65 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $8 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $2 + local.set $1 i32.const 11188 i32.load - local.set $4 + local.set $6 i32.const 11196 i32.load - local.set $6 + local.set $7 loop $for-loop|04 - local.get $1 - local.get $6 + local.get $0 + local.get $7 i32.lt_s if - local.get $4 - local.get $1 + local.get $0 i32.const 3 i32.shl - local.tee $7 + local.tee $9 + local.get $6 i32.add f64.load - local.set $8 - local.get $2 - local.get $7 + local.set $4 + local.get $1 + local.get $9 i32.add - local.get $8 - local.get $8 + local.get $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i64) - local.get $8 + local.get $4 i64.trunc_f64_s else i64.const 0 end i64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -44781,35 +42321,35 @@ i32.const 67 i32.const 13648 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=16 + local.get $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $8 + local.get $3 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $8 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 67 i32.const 13760 call $~lib/rt/__newArray - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=16 + local.get $8 local.get $0 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44898,197 +42438,198 @@ local.get $6 f64.convert_i64_u f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 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 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f32) - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - 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=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13872 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + 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 11088 - i32.store offset=16 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Uint64Array#constructor + local.tee $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13872 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $8 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 24 i32.add - local.set $4 + local.set $9 i32.const 11092 i32.load - local.set $6 + local.set $10 i32.const 11100 i32.load - local.set $7 + local.set $6 loop $for-loop|0 - local.get $2 - local.get $7 + local.get $1 + local.get $6 i32.lt_s if - local.get $2 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $9 i32.add - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $10 i32.add f32.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f32.sub f32.const 0 f32.eq if (result i64) - local.get $9 + local.get $5 i64.trunc_f32_u else i64.const 0 end i64.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -45097,15 +42638,15 @@ i32.const 68 i32.const 14032 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 - local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 + local.get $8 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 @@ -45116,67 +42657,65 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $8 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $2 + local.set $1 i32.const 11188 i32.load - local.set $4 + local.set $6 i32.const 11196 i32.load - local.set $6 + local.set $7 loop $for-loop|04 - local.get $1 - local.get $6 + local.get $0 + local.get $7 i32.lt_s if - local.get $4 - local.get $1 + local.get $0 i32.const 3 i32.shl - local.tee $7 + local.tee $9 + local.get $6 i32.add f64.load - local.set $8 - local.get $2 - local.get $7 + local.set $4 + local.get $1 + local.get $9 i32.add - local.get $8 - local.get $8 + local.get $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i64) - local.get $8 + local.get $4 i64.trunc_f64_u else i64.const 0 end i64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -45185,35 +42724,35 @@ i32.const 68 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=16 + local.get $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $8 + local.get $3 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $8 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 68 i32.const 14368 call $~lib/rt/__newArray - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=16 + local.get $8 local.get $0 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -45333,104 +42872,107 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $9 i32) + (local $10 i32) + (local $11 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i64.const 0 + i64.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=16 + local.get $4 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + 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 $9 + i32.store offset=8 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $9 + 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 $10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 i32.const 11020 i32.load - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 local.set $5 i32.const 11012 @@ -45438,28 +42980,28 @@ local.set $6 i32.const 11020 i32.load - local.set $7 + local.set $11 loop $for-loop|0 - local.get $0 - local.get $7 + local.get $2 + local.get $11 i32.lt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.tee $8 + local.tee $4 local.get $5 i32.add + local.get $4 local.get $6 - local.get $8 i32.add i32.load f32.convert_i32_s f32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -45468,17 +43010,17 @@ i32.const 61 i32.const 14480 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 + local.get $10 local.get $2 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - local.get $2 + local.get $10 i32.const 11088 i32.const 3 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -45487,62 +43029,60 @@ i32.const 61 i32.const 14592 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 + local.get $10 local.get $2 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $0 - local.get $3 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 24 i32.add - local.set $5 - local.get $3 + local.set $2 + local.get $7 i32.load offset=4 - local.set $6 - local.get $3 + local.set $4 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 + local.set $5 loop $for-loop|01 - local.get $0 local.get $3 + local.get $5 i32.lt_s if - local.get $0 + local.get $3 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add - local.get $0 + local.get $3 i32.const 3 i32.shl - local.get $6 + local.get $4 i32.add i64.load f32.convert_i64_s f32.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|01 end end @@ -45551,145 +43091,141 @@ i32.const 61 i32.const 14656 call $~lib/rt/__newArray - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=16 + local.get $10 local.get $2 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> i32.const 0 - local.set $0 - local.get $1 + local.set $2 + local.get $8 i32.load offset=8 - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 local.set $3 - local.get $1 + local.get $8 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $8 i32.load offset=8 - local.set $1 + local.set $5 loop $for-loop|03 - local.get $0 - local.get $1 + local.get $2 + local.get $5 i32.lt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl local.get $3 i32.add - local.get $0 - local.get $5 + local.get $2 + local.get $4 i32.add i32.load8_u f32.convert_i32_u f32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|03 end end - i32.const 0 - local.set $1 - local.get $4 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.const 4 i32.add - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 16 i32.add - local.set $3 - local.get $4 + local.set $2 + local.get $9 i32.load offset=4 - local.set $0 - local.get $4 + local.set $3 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u local.set $4 loop $for-loop|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $3 i32.add i32.load16_s f32.convert_i32_s f32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|05 end end global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11276 i32.load i32.const 7 i32.add - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 28 i32.add - local.set $3 + local.set $0 i32.const 11268 i32.load - local.set $4 + local.set $2 i32.const 11276 i32.load - local.set $0 + local.set $3 loop $for-loop|09 - local.get $0 local.get $1 - i32.gt_s + local.get $3 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $2 i32.add i32.load8_s f32.convert_i32_s @@ -45706,12 +43242,12 @@ i32.const 61 i32.const 14720 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=16 - local.get $2 - local.get $1 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -45828,134 +43364,137 @@ (local $5 i32) (local $6 i32) (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i64.const 0 + i64.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=16 + local.get $4 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $4 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $4 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $5 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + 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 $6 + i32.store offset=8 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $6 + 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 $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 i32.const 11020 i32.load - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 - local.set $5 + local.set $8 i32.const 11012 i32.load - local.set $6 + local.set $9 i32.const 11020 i32.load - local.set $7 + local.set $10 loop $for-loop|0 - local.get $0 - local.get $7 + local.get $1 + local.get $10 i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl - local.get $5 + local.get $8 i32.add - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $9 i32.add i32.load f64.convert_i32_s f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -45964,61 +43503,61 @@ i32.const 62 i32.const 14784 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 i32.const 11100 i32.load i32.const 3 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 24 i32.add - local.set $5 + local.set $8 i32.const 11092 i32.load - local.set $6 + local.set $9 i32.const 11100 i32.load - local.set $7 + local.set $10 loop $for-loop|04 - local.get $0 - local.get $7 + local.get $1 + local.get $10 i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl - local.get $5 + local.get $8 i32.add - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $9 i32.add f32.load f64.promote_f32 f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|04 end end @@ -46027,61 +43566,59 @@ i32.const 62 i32.const 14944 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $0 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 48 i32.add - local.set $5 - local.get $3 + local.set $1 + local.get $4 i32.load offset=4 - local.set $6 - local.get $3 + local.set $8 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 + local.set $4 loop $for-loop|06 - local.get $0 local.get $3 + local.get $4 i32.lt_s if - local.get $5 - local.get $0 + local.get $3 i32.const 3 i32.shl - local.tee $7 + local.tee $9 + local.get $1 i32.add - local.get $6 - local.get $7 + local.get $8 + local.get $9 i32.add i64.load f64.convert_i64_s f64.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|06 end end @@ -46090,153 +43627,149 @@ i32.const 62 i32.const 15056 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $2 - local.get $3 + local.get $7 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $5 i32.load offset=8 - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 local.set $3 - local.get $1 + local.get $5 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $5 i32.load offset=8 - local.set $1 + local.set $5 loop $for-loop|08 - local.get $0 local.get $1 + local.get $5 i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl local.get $3 i32.add - local.get $0 - local.get $5 + local.get $1 + local.get $4 i32.add i32.load8_u f64.convert_i32_u f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|08 end end - i32.const 0 - local.set $1 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u i32.const 4 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 32 i32.add - local.set $3 - local.get $4 + local.set $1 + local.get $6 i32.load offset=4 - local.set $0 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $4 loop $for-loop|010 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $3 - i32.add local.get $1 + i32.add + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $3 i32.add i32.load16_s f64.convert_i32_s f64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|010 end end global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11276 i32.load i32.const 7 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 56 i32.add - local.set $3 + local.set $0 i32.const 11268 i32.load - local.set $4 + local.set $1 i32.const 11276 i32.load - local.set $0 + local.set $3 loop $for-loop|014 - local.get $0 - local.get $1 - i32.gt_s + local.get $2 + local.get $3 + i32.lt_s if - local.get $1 + local.get $2 i32.const 3 i32.shl - local.get $3 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $2 i32.add i32.load8_s f64.convert_i32_s f64.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|014 end end @@ -46245,12 +43778,12 @@ i32.const 62 i32.const 15168 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=16 - local.get $2 - local.get $1 + local.get $7 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -46271,62 +43804,61 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 f32) - (local $12 f64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) (local $13 i64) (local $14 f32) (local $15 f64) - (local $16 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner36 - block $folding-inner35 - block $folding-inner34 - block $folding-inner33 - block $folding-inner32 - block $folding-inner31 - block $folding-inner30 - block $folding-inner29 - block $folding-inner28 - block $folding-inner27 - block $folding-inner26 - block $folding-inner25 - block $folding-inner24 - block $folding-inner23 - block $folding-inner22 - block $folding-inner21 - block $folding-inner20 - block $folding-inner19 - block $folding-inner18 - block $folding-inner17 - block $folding-inner16 - block $folding-inner15 - block $folding-inner14 - block $folding-inner13 - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 + block $folding-inner35 + block $folding-inner34 + block $folding-inner33 + block $folding-inner32 + block $folding-inner31 + block $folding-inner30 + block $folding-inner29 + block $folding-inner28 + block $folding-inner27 + block $folding-inner26 + block $folding-inner25 + block $folding-inner24 + block $folding-inner23 + block $folding-inner22 + block $folding-inner21 + block $folding-inner20 + block $folding-inner19 + block $folding-inner18 + block $folding-inner17 + block $folding-inner16 + block $folding-inner15 + block $folding-inner14 + block $folding-inner13 + block $folding-inner12 + block $folding-inner11 + block $folding-inner10 + block $folding-inner9 + block $folding-inner8 + block $folding-inner7 + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46574,9 +44106,9 @@ i32.const 2 i32.const 6 call $~lib/typedarray/Float64Array#subarray - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -46590,9 +44122,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub i32.const 16 @@ -46605,7 +44137,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 32 i32.ne @@ -46619,16 +44151,16 @@ end i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 call $~lib/typedarray/Float64Array#sort@varargs drop - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.eq if (result i32) - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -46637,7 +44169,7 @@ i32.const 0 end if (result i32) - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 6 @@ -46646,7 +44178,7 @@ i32.const 0 end if (result i32) - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#__get f64.const 7 @@ -46998,35 +44530,35 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_u select - local.set $1 + local.set $0 i32.const 3 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 3 i32.gt_u select - local.set $0 + local.set $1 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -47054,31 +44586,29 @@ local.get $4 i32.load offset=4 local.set $2 - i32.const 0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 - select local.set $0 + i32.const 0 + local.set $1 loop $for-loop|01 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|01 end end @@ -47107,40 +44637,36 @@ i32.load offset=4 local.set $2 i32.const 0 + local.set $0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 - select - local.set $1 - local.get $0 i32.const 3 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|03 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|03 end end @@ -47167,12 +44693,12 @@ end local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const 2 i32.sub local.tee $0 @@ -47181,23 +44707,23 @@ i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|05 - local.get $0 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 i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|05 end end @@ -47224,7 +44750,7 @@ end local.get $4 i32.load offset=4 - local.set $2 + local.set $1 i32.const 1 local.get $4 i32.load offset=8 @@ -47235,28 +44761,23 @@ i32.const 1 i32.gt_u select - local.set $1 - i32.const 0 - local.get $0 - local.get $0 - select local.set $0 loop $for-loop|07 local.get $0 - local.get $1 - i32.gt_s + i32.const 0 + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|07 end end @@ -47291,31 +44812,29 @@ local.get $3 i32.load offset=4 local.set $2 - i32.const 0 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 - select local.set $0 + i32.const 0 + local.set $1 loop $for-loop|09 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|09 end end @@ -48107,9 +45626,9 @@ i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -48123,9 +45642,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load i32.sub i32.const 4 @@ -48138,7 +45657,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 12 i32.ne @@ -48155,9 +45674,9 @@ i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -48170,7 +45689,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -48183,7 +45702,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -48197,9 +45716,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub if @@ -48210,7 +45729,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 8 i32.ne @@ -48223,7 +45742,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#slice @@ -48355,7 +45874,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48363,57 +45882,59 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 2896 i32.store offset=4 - local.get $3 + i32.const 0 + local.set $0 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|011 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|010 + local.get $0 + local.get $2 + i32.lt_s if - local.get $2 - local.get $5 + local.get $0 + local.get $3 i32.add i32.load8_s - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2896 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|011 + local.set $0 + br $for-loop|010 end end - local.get $6 + local.get $9 i32.const 255 i32.and i32.const 6 @@ -48430,7 +45951,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48438,17 +45959,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -48456,43 +45977,43 @@ i32.const 2928 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|010 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|04 + local.get $0 + local.get $2 + i32.lt_s if - local.get $2 - local.get $5 + local.get $0 + local.get $3 i32.add i32.load8_u - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2928 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|010 + local.set $0 + br $for-loop|04 end end - local.get $6 + local.get $9 i32.const 255 i32.and i32.const 6 @@ -48509,7 +46030,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48517,17 +46038,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -48535,43 +46056,43 @@ i32.const 2960 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|013 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|08 + local.get $0 + local.get $2 + i32.lt_s if - local.get $2 - local.get $5 + local.get $0 + local.get $3 i32.add i32.load8_u - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2960 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|013 + local.set $0 + br $for-loop|08 end end - local.get $6 + local.get $9 i32.const 255 i32.and i32.const 6 @@ -48588,7 +46109,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48596,17 +46117,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -48614,47 +46135,47 @@ i32.const 2992 i32.store offset=4 i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - local.get $3 + local.set $0 + i32.const 0 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|014 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|01011 + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2992 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|014 + local.set $0 + br $for-loop|01011 end end - local.get $6 + local.get $9 i32.const 65535 i32.and i32.const 6 @@ -48671,7 +46192,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48679,17 +46200,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -48697,47 +46218,47 @@ i32.const 3024 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|016 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|013 + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 3024 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|016 + local.set $0 + br $for-loop|013 end end - local.get $6 + local.get $9 i32.const 65535 i32.and i32.const 6 @@ -48754,7 +46275,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48762,17 +46283,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -48780,47 +46301,47 @@ i32.const 3056 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|018 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|016 + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 3056 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|018 + local.set $0 + br $for-loop|016 end end - local.get $6 + local.get $9 i32.const 6 i32.ne br_if $folding-inner1 @@ -48835,7 +46356,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48843,17 +46364,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -48861,47 +46382,47 @@ i32.const 3088 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|021 - local.get $1 - local.get $5 - i32.gt_s + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 3088 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|021 end end - local.get $6 + local.get $9 i32.const 6 i32.ne br_if $folding-inner1 @@ -48916,7 +46437,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48924,17 +46445,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -48942,42 +46463,42 @@ i32.const 3120 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|023 + local.set $1 + loop $for-loop|024 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $5 - local.get $2 + local.get $10 + local.get $0 + local.get $3 i32.const 3120 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|023 + local.set $0 + br $for-loop|024 end end local.get $13 @@ -48995,7 +46516,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49003,17 +46524,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -49021,44 +46542,44 @@ i32.const 3152 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i64.const 0 local.set $13 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|025 + local.set $1 + loop $for-loop|027 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $5 - local.get $2 + local.get $10 + local.get $0 + local.get $3 i32.const 3152 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|025 + local.set $0 + br $for-loop|027 end end local.get $13 @@ -49076,7 +46597,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49084,17 +46605,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -49102,42 +46623,42 @@ i32.const 3184 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|027 + local.set $1 + loop $for-loop|030 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 4 global.set $~argumentsLength local.get $14 - local.get $11 local.get $5 - local.get $2 + local.get $0 + local.get $3 i32.const 3184 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $14 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|027 + local.set $0 + br $for-loop|030 end end local.get $14 @@ -49155,7 +46676,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49163,17 +46684,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -49181,42 +46702,42 @@ i32.const 3216 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|029 + local.set $1 + loop $for-loop|033 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $15 - local.get $12 - local.get $5 - local.get $2 + local.get $7 + local.get $0 + local.get $3 i32.const 3216 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $15 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|029 + local.set $0 + br $for-loop|033 end end local.get $15 @@ -49234,7 +46755,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49285,7 +46806,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49336,7 +46857,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49387,7 +46908,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49438,7 +46959,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49489,7 +47010,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49540,7 +47061,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49591,7 +47112,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49642,7 +47163,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49693,7 +47214,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49744,7 +47265,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49795,7 +47316,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49803,17 +47324,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set @@ -49821,17 +47342,17 @@ i32.const 3248 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|031 - local.get $3 + local.set $1 + loop $for-loop|039 + local.get $1 i32.const 0 i32.ge_s if @@ -49839,25 +47360,25 @@ local.get $3 i32.add i32.load8_s - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|031 + local.set $1 + br $for-loop|039 end end - local.get $5 + local.get $0 i32.const 255 i32.and i32.const 6 @@ -49874,7 +47395,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49882,17 +47403,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -49900,17 +47421,17 @@ i32.const 3280 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|033 - local.get $3 + local.set $1 + loop $for-loop|042 + local.get $1 i32.const 0 i32.ge_s if @@ -49918,25 +47439,25 @@ local.get $3 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|033 + local.set $1 + br $for-loop|042 end end - local.get $5 + local.get $0 i32.const 255 i32.and i32.const 6 @@ -49953,7 +47474,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49961,17 +47482,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -49979,17 +47500,17 @@ i32.const 3312 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|036 - local.get $3 + local.set $1 + loop $for-loop|046 + local.get $1 i32.const 0 i32.ge_s if @@ -49997,25 +47518,25 @@ local.get $3 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|036 + local.set $1 + br $for-loop|046 end end - local.get $5 + local.get $0 i32.const 255 i32.and i32.const 6 @@ -50032,7 +47553,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50040,17 +47561,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -50058,47 +47579,47 @@ i32.const 3344 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|038 - local.get $3 + local.set $1 + loop $for-loop|049 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $3 i32.add i32.load16_s - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|038 + local.set $1 + br $for-loop|049 end end - local.get $5 + local.get $0 i32.const 65535 i32.and i32.const 6 @@ -50115,7 +47636,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50123,17 +47644,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -50141,47 +47662,47 @@ i32.const 3376 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|040 - local.get $3 + local.set $1 + loop $for-loop|052 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $3 i32.add i32.load16_u - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|040 + local.set $1 + br $for-loop|052 end end - local.get $5 + local.get $0 i32.const 65535 i32.and i32.const 6 @@ -50198,7 +47719,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50206,17 +47727,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -50224,47 +47745,47 @@ i32.const 3408 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|042 - local.get $3 + local.set $1 + loop $for-loop|055 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $3 i32.add i32.load - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|042 + local.set $1 + br $for-loop|055 end end - local.get $5 + local.get $0 i32.const 6 i32.ne br_if $folding-inner5 @@ -50279,7 +47800,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50287,17 +47808,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -50305,47 +47826,47 @@ i32.const 3440 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|044 - local.get $3 + local.set $1 + loop $for-loop|058 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $3 i32.add i32.load - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|044 + local.set $1 + br $for-loop|058 end end - local.get $5 + local.get $0 i32.const 6 i32.ne br_if $folding-inner5 @@ -50360,7 +47881,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50368,17 +47889,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -50387,43 +47908,43 @@ i32.store offset=4 i64.const 0 local.set $13 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|046 - local.get $3 + local.set $1 + loop $for-loop|061 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $3 + local.get $10 local.get $1 + local.get $2 i32.const 3472 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|046 + local.set $1 + br $for-loop|061 end end local.get $13 @@ -50441,7 +47962,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50449,17 +47970,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -50468,43 +47989,43 @@ i32.store offset=4 i64.const 0 local.set $13 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|048 - local.get $3 + local.set $1 + loop $for-loop|064 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $3 + local.get $10 local.get $1 + local.get $2 i32.const 3504 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|048 + local.set $1 + br $for-loop|064 end end local.get $13 @@ -50522,7 +48043,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50530,17 +48051,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $2 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $2 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -50549,43 +48070,43 @@ i32.store offset=4 f32.const 0 local.set $14 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|050 - local.get $3 + local.set $1 + loop $for-loop|067 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.set $11 + local.set $5 i32.const 4 global.set $~argumentsLength local.get $14 - local.get $11 - local.get $3 + local.get $5 local.get $1 + local.get $2 i32.const 3536 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $14 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|050 + local.set $1 + br $for-loop|067 end end local.get $14 @@ -50603,7 +48124,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50611,17 +48132,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $2 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $2 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -50630,43 +48151,43 @@ i32.store offset=4 f64.const 0 local.set $15 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|052 - local.get $3 + local.set $1 + loop $for-loop|070 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.set $12 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $15 - local.get $12 - local.get $3 + local.get $7 local.get $1 + local.get $2 i32.const 3568 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $15 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|052 + local.set $1 + br $for-loop|070 end end local.get $15 @@ -50677,8 +48198,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $5 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50686,7 +48205,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50697,17 +48216,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $8 i32.store - local.get $0 + local.get $8 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $8 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $8 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set @@ -50722,100 +48241,103 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $8 i32.load offset=8 local.set $4 - local.get $0 + local.get $8 i32.load offset=4 - local.set $2 - local.get $1 + local.set $3 + local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store offset=4 - loop $for-loop|02 + loop $for-loop|012 local.get $4 - local.get $5 + local.get $12 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $12 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 - i32.add local.get $1 - local.get $5 + local.get $12 + i32.add local.get $0 + local.get $12 + local.get $8 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|02 + local.set $12 + br $for-loop|012 end end - local.get $7 - local.get $6 + local.get $2 + local.get $1 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $1 + if + local.get $2 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $1 i32.store offset=4 - local.get $7 + local.get $2 local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.store offset=8 - local.get $7 + local.get $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner6 + local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner7 + local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $5 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50823,7 +48345,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50834,17 +48356,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $8 i32.store - local.get $0 + local.get $8 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $8 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $8 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -50859,100 +48381,103 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $8 i32.load offset=8 local.set $4 - local.get $0 + local.get $8 i32.load offset=4 - local.set $2 - local.get $1 + local.set $3 + local.get $0 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store offset=4 - loop $for-loop|04 + loop $for-loop|014 local.get $4 - local.get $5 + local.get $12 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $12 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 - i32.add local.get $1 - local.get $5 + local.get $12 + i32.add local.get $0 + local.get $12 + local.get $8 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|04 + local.set $12 + br $for-loop|014 end end - local.get $7 - local.get $6 + local.get $2 + local.get $1 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $1 + if + local.get $2 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $1 i32.store offset=4 - local.get $7 + local.get $2 local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.store offset=8 - local.get $7 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner6 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner7 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $5 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50960,7 +48485,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50971,17 +48496,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $8 i32.store - local.get $0 + local.get $8 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $8 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $8 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -50996,98 +48521,103 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $8 i32.load offset=8 local.set $4 - local.get $0 + local.get $8 i32.load offset=4 - local.set $2 - local.get $1 + local.set $3 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store offset=4 - loop $for-loop|06 + loop $for-loop|015 local.get $4 - local.get $5 + local.get $12 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $12 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 - i32.add local.get $1 - local.get $5 + local.get $12 + i32.add local.get $0 + local.get $12 + local.get $8 i32.const 3664 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|06 + local.set $12 + br $for-loop|015 end end - local.get $7 - local.get $6 + local.get $2 + local.get $1 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $1 + if + local.get $2 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $1 i32.store offset=4 - local.get $7 + local.get $2 local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.store offset=8 - local.get $7 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner6 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner7 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51095,7 +48625,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51106,17 +48636,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -51131,108 +48661,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 1 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|08 - local.get $5 + loop $for-loop|017 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3696 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|08 + local.set $12 + br $for-loop|017 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $8 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51240,7 +48773,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51251,17 +48784,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -51276,108 +48809,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 1 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|012 - local.get $5 + loop $for-loop|018 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3728 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|012 + local.set $12 + br $for-loop|018 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $8 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51385,7 +48921,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51396,17 +48932,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -51421,108 +48957,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 2 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|015 - local.get $5 + loop $for-loop|019 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 2 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3760 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|015 + local.set $12 + br $for-loop|019 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $8 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51530,7 +49069,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51541,17 +49080,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -51566,108 +49105,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 2 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|017 - local.get $5 + loop $for-loop|020 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 2 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3792 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|017 + local.set $12 + br $for-loop|020 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51675,7 +49217,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51686,17 +49228,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $9 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $9 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -51711,24 +49253,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -51737,82 +49279,85 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - loop $for-loop|019 + loop $for-loop|022 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add + local.get $10 + local.get $12 local.get $9 - local.get $7 - local.get $0 i32.const 3824 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 - br $for-loop|019 + local.set $12 + br $for-loop|022 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 i64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 i64.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51820,7 +49365,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51831,17 +49376,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $9 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $9 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -51856,24 +49401,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -51882,82 +49427,85 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - loop $for-loop|022 + loop $for-loop|023 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add + local.get $10 + local.get $12 local.get $9 - local.get $7 - local.get $0 i32.const 3856 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 - br $for-loop|022 + local.set $12 + br $for-loop|023 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 i64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 i64.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51965,7 +49513,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51976,17 +49524,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $9 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $9 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -52001,24 +49549,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -52027,82 +49575,85 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - loop $for-loop|024 + loop $for-loop|025 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 2 i32.shl - local.tee $1 + local.tee $0 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add - local.get $11 - local.get $7 - local.get $0 + local.get $5 + local.get $12 + local.get $9 i32.const 3888 i32.load call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 - br $for-loop|024 + local.set $12 + br $for-loop|025 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 f32.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 f32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52110,7 +49661,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52121,17 +49672,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $9 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $9 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -52146,24 +49697,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -52172,76 +49723,79 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 loop $for-loop|026 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add - local.get $12 local.get $7 - local.get $0 + local.get $12 + local.get $9 i32.const 3920 i32.load call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $12 br $for-loop|026 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 f64.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -52257,6 +49811,8 @@ call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52264,7 +49820,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52289,22 +49845,20 @@ global.get $~lib/memory/__stack_pointer i32.const 4304 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|045 + local.set $2 + loop $for-loop|028 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -52312,43 +49866,43 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|045 + local.set $1 + br $for-loop|028 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4336 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.047 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|049 + local.set $2 + loop $for-loop|0329 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -52356,27 +49910,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4336 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.047 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|049 + local.set $1 + br $for-loop|0329 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52384,7 +49940,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52409,22 +49965,20 @@ global.get $~lib/memory/__stack_pointer i32.const 4368 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|051 + local.set $2 + loop $for-loop|031 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52432,43 +49986,43 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4368 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|051 + local.set $1 + br $for-loop|031 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4400 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.053 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|054 + local.set $2 + loop $for-loop|0332 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52476,27 +50030,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4400 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.053 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|054 + local.set $1 + br $for-loop|0332 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52504,7 +50060,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52529,22 +50085,20 @@ global.get $~lib/memory/__stack_pointer i32.const 4432 i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.057 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.033 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|058 + local.set $2 + loop $for-loop|034 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52552,43 +50106,43 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4432 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.057 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.033 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|058 + local.set $1 + br $for-loop|034 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4464 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0135 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|061 + local.set $2 + loop $for-loop|0336 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52596,27 +50150,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4464 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0135 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|061 + local.set $1 + br $for-loop|0336 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52624,7 +50180,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52649,26 +50205,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4496 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|063 + local.set $2 + loop $for-loop|037 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -52676,47 +50230,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4496 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|063 + local.set $1 + br $for-loop|037 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4528 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.065 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|066 + local.set $2 + loop $for-loop|0338 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -52724,27 +50278,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4528 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.065 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|066 + local.set $1 + br $for-loop|0338 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52752,7 +50308,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52777,26 +50333,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4560 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|068 + local.set $2 + loop $for-loop|040 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -52804,47 +50358,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4560 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|068 + local.set $1 + br $for-loop|040 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4592 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.070 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|071 + local.set $2 + loop $for-loop|0341 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -52852,27 +50406,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4592 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.070 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|071 + local.set $1 + br $for-loop|0341 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52880,7 +50436,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52905,26 +50461,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4624 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|073 + local.set $2 + loop $for-loop|043 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -52932,47 +50486,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4624 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|073 + local.set $1 + br $for-loop|043 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4656 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.075 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|076 + local.set $2 + loop $for-loop|0344 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -52980,27 +50534,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4656 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.075 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|076 + local.set $1 + br $for-loop|0344 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53008,7 +50564,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53033,26 +50589,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4688 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|078 + local.set $2 + loop $for-loop|045 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -53060,47 +50614,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4688 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|078 + local.set $1 + br $for-loop|045 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4720 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.080 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|081 + local.set $2 + loop $for-loop|0346 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -53108,27 +50662,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4720 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.080 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|081 + local.set $1 + br $for-loop|0346 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53136,7 +50692,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53161,102 +50717,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4752 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|083 + loop $for-loop|047 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4752 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|083 + local.set $1 + br $for-loop|047 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4784 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.085 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|086 + loop $for-loop|0348 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4784 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.085 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|086 + local.set $1 + br $for-loop|0348 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53264,7 +50820,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53289,102 +50845,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4816 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|088 + loop $for-loop|050 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4816 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|088 + local.set $1 + br $for-loop|050 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4848 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.090 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|091 + loop $for-loop|0351 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4848 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.090 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|091 + local.set $1 + br $for-loop|0351 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53392,7 +50948,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53417,102 +50973,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4880 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|093 + loop $for-loop|053 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 4880 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|093 + local.set $1 + br $for-loop|053 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4912 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.095 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|096 + loop $for-loop|0354 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 4912 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.095 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|096 + local.set $1 + br $for-loop|0354 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53520,7 +51076,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53545,102 +51101,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4944 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|098 + loop $for-loop|056 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 4944 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|098 + local.set $1 + br $for-loop|056 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4976 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0100 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0101 + loop $for-loop|0357 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 4976 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0100 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0101 + local.set $1 + br $for-loop|0357 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53648,12 +51204,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $4 @@ -53673,8 +51229,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5008 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -53682,84 +51236,86 @@ i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0103 - local.get $1 + loop $for-loop|059 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5008 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0103 + local.set $0 + br $for-loop|059 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5040 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0105 - loop $for-loop|0106 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + loop $for-loop|0360 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5040 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0105 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0106 + local.set $0 + br $for-loop|0360 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53767,12 +51323,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $4 @@ -53792,8 +51348,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5072 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -53801,84 +51355,86 @@ i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0108 - local.get $1 + loop $for-loop|062 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5072 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0108 + local.set $0 + br $for-loop|062 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5104 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0110 - loop $for-loop|0111 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + loop $for-loop|0363 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5104 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0110 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0111 + local.set $0 + br $for-loop|0363 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53886,12 +51442,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $4 @@ -53911,93 +51467,93 @@ global.get $~lib/memory/__stack_pointer i32.const 5136 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0114 - loop $for-loop|0115 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.064 + loop $for-loop|065 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5136 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0114 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.064 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0115 + local.set $0 + br $for-loop|065 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5168 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - loop $for-loop|0118 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0166 + loop $for-loop|0367 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5168 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0166 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0118 + local.set $0 + br $for-loop|0367 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54005,12 +51561,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $4 @@ -54030,8 +51586,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5200 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54041,12 +51595,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0120 - local.get $1 + loop $for-loop|068 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54054,31 +51608,31 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5200 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0120 + local.set $0 + br $for-loop|068 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5232 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54087,13 +51641,13 @@ i32.const 1 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0122 - loop $for-loop|0123 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + loop $for-loop|0369 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54101,30 +51655,32 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5232 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0122 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0123 + local.set $0 + br $for-loop|0369 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54132,12 +51688,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $4 @@ -54157,8 +51713,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5264 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54168,12 +51722,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0125 - local.get $1 + loop $for-loop|071 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54181,31 +51735,31 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5264 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0125 + local.set $0 + br $for-loop|071 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5296 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54214,13 +51768,13 @@ i32.const 1 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0127 - loop $for-loop|0128 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + loop $for-loop|0372 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54228,30 +51782,32 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5296 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0127 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0128 + local.set $0 + br $for-loop|0372 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54259,12 +51815,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $4 @@ -54284,8 +51840,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5328 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54295,12 +51849,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0130 - local.get $1 + loop $for-loop|073 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54308,31 +51862,31 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5328 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0130 + local.set $0 + br $for-loop|073 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5360 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54341,13 +51895,13 @@ i32.const 2 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0132 - loop $for-loop|0133 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + loop $for-loop|0374 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54355,30 +51909,32 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5360 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0132 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0133 + local.set $0 + br $for-loop|0374 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54386,12 +51942,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $4 @@ -54411,8 +51967,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5392 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54422,12 +51976,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0135 - local.get $1 + loop $for-loop|075 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54435,31 +51989,31 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5392 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0135 + local.set $0 + br $for-loop|075 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5424 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54468,13 +52022,13 @@ i32.const 2 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0137 - loop $for-loop|0138 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + loop $for-loop|0376 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54482,30 +52036,32 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5424 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0137 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0138 + local.set $0 + br $for-loop|0376 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54513,12 +52069,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $3 @@ -54538,8 +52094,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5456 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54547,14 +52101,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0140 + loop $for-loop|077 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54562,31 +52116,31 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5456 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0140 + local.set $0 + br $for-loop|077 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5488 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54594,14 +52148,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0142 - loop $for-loop|0143 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + loop $for-loop|0378 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54609,30 +52163,32 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5488 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0142 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0143 + local.set $0 + br $for-loop|0378 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54640,12 +52196,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $3 @@ -54665,8 +52221,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5520 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54674,14 +52228,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0145 + loop $for-loop|079 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54689,31 +52243,31 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5520 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0145 + local.set $0 + br $for-loop|079 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5552 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54721,14 +52275,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0147 - loop $for-loop|0148 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + loop $for-loop|0380 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54736,30 +52290,32 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5552 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0147 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0148 + local.set $0 + br $for-loop|0380 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54767,12 +52323,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $3 @@ -54792,8 +52348,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5584 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54801,14 +52355,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0150 + loop $for-loop|081 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -54816,31 +52370,31 @@ f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5584 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0150 + local.set $0 + br $for-loop|081 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54848,14 +52402,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0152 - loop $for-loop|0153 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + loop $for-loop|0382 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -54863,30 +52417,32 @@ f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5616 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0152 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0153 + local.set $0 + br $for-loop|0382 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54894,12 +52450,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $3 @@ -54919,8 +52475,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5648 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54928,14 +52482,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0155 + loop $for-loop|083 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54943,31 +52497,31 @@ f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5648 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0155 + local.set $0 + br $for-loop|083 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5680 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54975,14 +52529,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0157 - loop $for-loop|0158 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + loop $for-loop|0384 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54990,26 +52544,26 @@ f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5680 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0157 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0158 + local.set $0 + br $for-loop|0384 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55021,7 +52575,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55053,39 +52607,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0160 - local.get $1 + loop $for-loop|085 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5712 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0160 + local.set $0 + br $for-loop|085 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5744 i32.store offset=4 @@ -55096,39 +52650,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0162 - loop $for-loop|0163 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + loop $for-loop|0386 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5744 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0162 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0163 + local.set $0 + br $for-loop|0386 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55140,7 +52694,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55172,39 +52726,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0165 - local.get $1 + loop $for-loop|087 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5776 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0165 + local.set $0 + br $for-loop|087 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5808 i32.store offset=4 @@ -55215,39 +52769,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0167 - loop $for-loop|0168 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + loop $for-loop|0388 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5808 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0167 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0168 + local.set $0 + br $for-loop|0388 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55259,7 +52813,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55291,39 +52845,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0171 - loop $for-loop|0172 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.089 + loop $for-loop|090 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5840 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0171 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.089 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0172 + local.set $0 + br $for-loop|090 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5872 i32.store offset=4 @@ -55334,39 +52888,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 - loop $for-loop|0175 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0191 + loop $for-loop|0392 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5872 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0191 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0175 + local.set $0 + br $for-loop|0392 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55378,7 +52932,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55412,14 +52966,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0177 - local.get $1 + loop $for-loop|093 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55427,26 +52981,26 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5904 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0177 + local.set $0 + br $for-loop|093 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5936 i32.store offset=4 @@ -55459,14 +53013,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0179 - loop $for-loop|0180 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + loop $for-loop|0394 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55474,26 +53028,26 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5936 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0179 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0180 + local.set $0 + br $for-loop|0394 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55505,7 +53059,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55539,14 +53093,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0182 - local.get $1 + loop $for-loop|095 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55554,26 +53108,26 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5968 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0182 + local.set $0 + br $for-loop|095 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6000 i32.store offset=4 @@ -55586,14 +53140,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0184 - loop $for-loop|0185 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + loop $for-loop|0396 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55601,26 +53155,26 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6000 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0184 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0185 + local.set $0 + br $for-loop|0396 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55632,7 +53186,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55666,14 +53220,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0187 - local.get $1 + loop $for-loop|097 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55681,26 +53235,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6032 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0187 + local.set $0 + br $for-loop|097 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6064 i32.store offset=4 @@ -55713,14 +53267,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0189 - loop $for-loop|0190 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + loop $for-loop|0398 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55728,26 +53282,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6064 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0189 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0190 + local.set $0 + br $for-loop|0398 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55759,7 +53313,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55793,14 +53347,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0192 - local.get $1 + loop $for-loop|099 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55808,26 +53362,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6096 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0192 + local.set $0 + br $for-loop|099 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6128 i32.store offset=4 @@ -55840,14 +53394,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0194 - loop $for-loop|0195 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + loop $for-loop|03100 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55855,26 +53409,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6128 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0194 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0195 + local.set $0 + br $for-loop|03100 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55886,7 +53440,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55913,95 +53467,95 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0197 - local.get $1 + loop $for-loop|0101 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6160 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0197 + local.set $0 + br $for-loop|0101 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6192 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0199 - loop $for-loop|0200 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + loop $for-loop|03102 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6192 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0199 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0200 + local.set $0 + br $for-loop|03102 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56013,7 +53567,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56040,95 +53594,95 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0202 - local.get $1 + loop $for-loop|0103 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6224 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0202 + local.set $0 + br $for-loop|0103 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6256 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0204 - loop $for-loop|0205 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + loop $for-loop|03104 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6256 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0204 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0205 + local.set $0 + br $for-loop|03104 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56140,7 +53694,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56167,95 +53721,95 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0207 - local.get $1 + loop $for-loop|0105 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6288 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0207 + local.set $0 + br $for-loop|0105 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6320 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0209 - loop $for-loop|0210 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + loop $for-loop|03106 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6320 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0209 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0210 + local.set $0 + br $for-loop|03106 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56267,7 +53821,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56294,99 +53848,101 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0212 - local.get $1 + loop $for-loop|0107 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6352 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0212 + local.set $0 + br $for-loop|0107 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6384 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0214 - loop $for-loop|0215 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + loop $for-loop|03108 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6384 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0214 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0215 + local.set $0 + br $for-loop|03108 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56394,7 +53950,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56419,22 +53975,20 @@ global.get $~lib/memory/__stack_pointer i32.const 6416 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0217 + local.set $2 + loop $for-loop|0109 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -56442,7 +53996,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6416 i32.load @@ -56450,36 +54004,36 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0217 + local.set $1 + br $for-loop|0109 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6448 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0219 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0220 + local.set $2 + loop $for-loop|03110 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -56487,28 +54041,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0219 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0220 + local.set $1 + br $for-loop|03110 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56516,7 +54072,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56541,22 +54097,20 @@ global.get $~lib/memory/__stack_pointer i32.const 6480 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0222 + local.set $2 + loop $for-loop|0111 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56564,7 +54118,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6480 i32.load @@ -56572,36 +54126,36 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0222 + local.set $1 + br $for-loop|0111 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6512 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0224 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0225 + local.set $2 + loop $for-loop|03112 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56609,28 +54163,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0224 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0225 + local.set $1 + br $for-loop|03112 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56638,7 +54194,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56663,22 +54219,20 @@ global.get $~lib/memory/__stack_pointer i32.const 6544 i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0228 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0113 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0229 + local.set $2 + loop $for-loop|0114 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56686,44 +54240,44 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0228 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0113 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0229 + local.set $1 + br $for-loop|0114 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6576 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01115 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0232 + local.set $2 + loop $for-loop|03116 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56731,28 +54285,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01115 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0232 + local.set $1 + br $for-loop|03116 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56760,7 +54316,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56785,26 +54341,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6608 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0234 + local.set $2 + loop $for-loop|0117 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -56812,7 +54366,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6608 i32.load @@ -56820,40 +54374,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0234 + local.set $1 + br $for-loop|0117 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6640 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0236 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0237 + local.set $2 + loop $for-loop|03118 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -56861,28 +54415,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0236 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0237 + local.set $1 + br $for-loop|03118 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56890,7 +54446,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56915,26 +54471,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6672 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0239 + local.set $2 + loop $for-loop|0119 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -56942,7 +54496,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6672 i32.load @@ -56950,40 +54504,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0239 + local.set $1 + br $for-loop|0119 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6704 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0241 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0242 + local.set $2 + loop $for-loop|03120 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -56991,28 +54545,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0241 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0242 + local.set $1 + br $for-loop|03120 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57020,7 +54576,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57045,26 +54601,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6736 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0244 + local.set $2 + loop $for-loop|0121 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57072,7 +54626,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6736 i32.load @@ -57080,40 +54634,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0244 + local.set $1 + br $for-loop|0121 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6768 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0246 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0247 + local.set $2 + loop $for-loop|03122 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57121,28 +54675,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0246 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0247 + local.set $1 + br $for-loop|03122 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57150,7 +54706,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57175,26 +54731,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6800 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0249 + local.set $2 + loop $for-loop|0123 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57202,7 +54756,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6800 i32.load @@ -57210,40 +54764,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0249 + local.set $1 + br $for-loop|0123 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6832 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0251 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0252 + local.set $2 + loop $for-loop|03124 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57251,28 +54805,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6832 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0251 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0252 + local.set $1 + br $for-loop|03124 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57280,7 +54836,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57305,34 +54861,32 @@ global.get $~lib/memory/__stack_pointer i32.const 6864 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0254 + loop $for-loop|0125 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6864 i32.load @@ -57340,69 +54894,71 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0254 + local.set $1 + br $for-loop|0125 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6896 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0256 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0257 + loop $for-loop|03126 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6896 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0256 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0257 + local.set $1 + br $for-loop|03126 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57410,7 +54966,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57435,34 +54991,32 @@ global.get $~lib/memory/__stack_pointer i32.const 6928 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0259 + loop $for-loop|0127 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6928 i32.load @@ -57470,69 +55024,71 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0259 + local.set $1 + br $for-loop|0127 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6960 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0261 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0262 + loop $for-loop|03128 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6960 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0261 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0262 + local.set $1 + br $for-loop|03128 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57540,7 +55096,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57565,34 +55121,32 @@ global.get $~lib/memory/__stack_pointer i32.const 6992 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0264 + loop $for-loop|0129 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 6992 i32.load @@ -57600,69 +55154,71 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0264 + local.set $1 + br $for-loop|0129 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 7024 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0266 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0267 + loop $for-loop|03130 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 7024 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0266 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0267 + local.set $1 + br $for-loop|03130 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57670,7 +55226,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57695,34 +55251,32 @@ global.get $~lib/memory/__stack_pointer i32.const 7056 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0269 + loop $for-loop|0131 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 7056 i32.load @@ -57730,67 +55284,461 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0269 + local.set $1 + br $for-loop|0131 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 7088 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0271 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0272 + loop $for-loop|03132 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 7088 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0271 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0272 + local.set $1 + br $for-loop|03132 end end - i32.const 1 + i32.const 1 + end + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7200 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + local.set $1 + loop $for-loop|073133 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $2 + local.get $9 + i32.add + i32.load8_s + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7200 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|073133 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7232 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + local.set $1 + loop $for-loop|076 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $2 + local.get $9 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7232 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|076 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 7264 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + local.set $1 + loop $for-loop|080 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $2 + local.get $9 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7264 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|080 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7296 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + loop $for-loop|083134 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $9 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.load16_s + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7296 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|083134 + end end - br_if $folding-inner13 + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 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 @@ -57800,7 +55748,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57812,7 +55760,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $3 i32.store local.get $3 @@ -57825,8 +55773,9 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57835,8 +55784,9 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57845,46 +55795,51 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7200 + i32.const 7328 i32.store offset=8 i32.const 0 - local.set $5 + local.set $9 local.get $3 i32.load offset=4 local.set $2 local.get $3 i32.load offset=8 + i32.const 1 + i32.shr_u local.set $1 - loop $for-loop|054274 + loop $for-loop|086 local.get $1 - local.get $5 + local.get $9 i32.gt_s if + local.get $9 + i32.const 1 + i32.shl local.get $2 - local.get $5 i32.add - i32.load8_s + i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $5 + local.get $9 local.get $3 - i32.const 7200 + i32.const 7328 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|054274 + local.set $9 + br $for-loop|086 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -57896,7 +55851,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57908,7 +55863,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $3 i32.store local.get $3 @@ -57921,9 +55876,7 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57932,9 +55885,7 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57943,47 +55894,49 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7232 + i32.const 7360 i32.store offset=8 i32.const 0 - local.set $5 + local.set $9 local.get $3 i32.load offset=4 local.set $2 local.get $3 i32.load offset=8 + i32.const 2 + i32.shr_u local.set $1 - loop $for-loop|056 + loop $for-loop|089 local.get $1 - local.get $5 + local.get $9 i32.gt_s if + local.get $9 + i32.const 2 + i32.shl local.get $2 - local.get $5 i32.add - i32.load8_u + i32.load i32.const 3 global.set $~argumentsLength - local.get $5 + local.get $9 local.get $3 - i32.const 7232 + i32.const 7360 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|056 + local.set $9 + br $for-loop|089 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -57995,7 +55948,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58007,7 +55960,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $3 i32.store local.get $3 @@ -58020,9 +55973,7 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -58031,9 +55982,7 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -58042,47 +55991,49 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7264 + i32.const 7392 i32.store offset=8 i32.const 0 - local.set $5 + local.set $9 local.get $3 i32.load offset=4 local.set $2 local.get $3 i32.load offset=8 + i32.const 2 + i32.shr_u local.set $1 - loop $for-loop|059 + loop $for-loop|092 local.get $1 - local.get $5 + local.get $9 i32.gt_s if + local.get $9 + i32.const 2 + i32.shl local.get $2 - local.get $5 i32.add - i32.load8_u + i32.load i32.const 3 global.set $~argumentsLength - local.get $5 + local.get $9 local.get $3 - i32.const 7264 + i32.const 7392 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|059 + local.set $9 + br $for-loop|092 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58094,7 +56045,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58106,83 +56057,83 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 i32.store - local.get $3 + local.get $2 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7296 + i32.const 7424 i32.store offset=8 i32.const 0 - local.set $5 - local.get $3 + local.set $9 + local.get $2 i32.load offset=4 - local.set $2 - local.get $3 + local.set $1 + local.get $2 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|061278 - local.get $1 - local.get $5 + local.set $0 + loop $for-loop|095135 + local.get $0 + local.get $9 i32.gt_s if - local.get $5 - i32.const 1 + local.get $9 + i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add - i32.load16_s + i64.load i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 - i32.const 7296 + local.get $9 + local.get $2 + i32.const 7424 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|061278 + local.set $9 + br $for-loop|095135 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58194,7 +56145,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58206,86 +56157,183 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 i32.store - local.get $3 + local.get $2 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7328 + i32.const 7456 i32.store offset=8 i32.const 0 - local.set $5 - local.get $3 + local.set $9 + local.get $2 i32.load offset=4 - local.set $2 - local.get $3 + local.set $1 + local.get $2 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|063280 - local.get $1 - local.get $5 + local.set $0 + loop $for-loop|098 + local.get $0 + local.get $9 i32.gt_s if - local.get $5 - i32.const 1 + local.get $9 + i32.const 3 i32.shl + local.get $1 + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $9 local.get $2 + i32.const 7456 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $9 + i32.const 1 i32.add - i32.load16_u + local.set $9 + br $for-loop|098 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store + local.get $2 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|0101136 + local.get $0 + local.get $9 + i32.gt_s + if + local.get $9 + i32.const 2 + i32.shl + local.get $1 + i32.add + f32.load i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 - i32.const 7328 + local.get $9 + local.get $2 + i32.const 7488 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect $0 (type $f32_i32_i32_=>_none) + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|063280 + local.set $9 + br $for-loop|0101136 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58297,7 +56345,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58309,583 +56357,990 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 i32.store - local.get $3 + local.get $2 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7360 + i32.const 7520 i32.store offset=8 i32.const 0 - local.set $5 - local.get $3 + local.set $9 + local.get $2 i32.load offset=4 - local.set $2 - local.get $3 + local.set $1 + local.get $2 i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0104 + local.get $0 + local.get $9 + i32.gt_s + if + local.get $9 + i32.const 3 + i32.shl + local.get $1 + i32.add + f64.load + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $2 + i32.const 7520 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0104 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 7616 + i32.store + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0106 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0106 + end + end + local.get $2 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + call $~lib/typedarray/Int8Array#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s + i32.ne + br_if $folding-inner18 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|065 - local.get $1 - local.get $5 - i32.gt_s - if - local.get $5 - i32.const 2 - i32.shl - local.get $2 - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $3 - i32.const 7360 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|065 - end - end - global.get $std/typedarray/forEachCallCount + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + i32.const 7616 i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 local.get $3 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7392 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 i32.store offset=8 + loop $for-loop|020137 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|020137 + end + end + local.get $2 + call $~lib/typedarray/Int8Array#reverse + drop i32.const 0 - local.set $5 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u local.set $1 - loop $for-loop|067 + loop $for-loop|121 local.get $1 - local.get $5 - i32.gt_s + local.get $3 + i32.lt_s if - local.get $5 - i32.const 2 - i32.shl local.get $2 - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7616 local.get $3 - i32.const 7392 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|067 + local.set $1 + br $for-loop|121 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7424 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 i32.store offset=8 - i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - loop $for-loop|069 - local.get $0 - local.get $5 - i32.gt_s + loop $for-loop|024108 + local.get $1 + local.get $3 + i32.lt_s if - local.get $5 - i32.const 3 - i32.shl + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 + i32.const 1 i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.set $1 + br $for-loop|024108 + end + end + local.get $2 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|125 + local.get $1 + local.get $3 + i32.lt_s + if local.get $2 - i32.const 7424 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $5 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|069 + local.set $1 + br $for-loop|125 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7456 + local.get $3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 i32.store offset=8 - i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - loop $for-loop|071285 - local.get $0 - local.get $5 - i32.gt_s + loop $for-loop|028138 + local.get $1 + local.get $3 + i32.lt_s if - local.get $5 - i32.const 3 - i32.shl + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $1 + i32.const 1 i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.set $1 + br $for-loop|028138 + end + end + local.get $2 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|129 + local.get $1 + local.get $3 + i32.lt_s + if local.get $2 - i32.const 7456 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $5 + local.get $1 + call $~lib/typedarray/Int16Array#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|071285 + local.set $1 + br $for-loop|129 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7488 + local.get $3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 i32.store offset=8 - i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - loop $for-loop|073287 - local.get $0 - local.get $5 - i32.gt_s + loop $for-loop|032 + local.get $1 + local.get $3 + i32.lt_s if - local.get $5 - i32.const 2 - i32.shl + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.get $1 + i32.const 7616 local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.set $1 + br $for-loop|032 + end + end + local.get $2 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|133 + local.get $1 + local.get $3 + i32.lt_s + if local.get $2 - i32.const 7488 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_none) - local.get $5 + local.get $1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|073287 + local.set $1 + br $for-loop|133 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $11 + call $~lib/typedarray/Int32Array#constructor + local.tee $8 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7520 + local.get $11 + call $~lib/typedarray/Int32Array#constructor + local.tee $9 i32.store offset=8 + loop $for-loop|036 + local.get $1 + local.get $11 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $9 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|036 + end + end i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 local.set $1 - local.get $2 + local.get $8 + i32.load offset=4 + local.set $6 + local.get $8 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|075 + local.tee $0 + i32.const 1 + i32.gt_u + if local.get $0 - local.get $5 - i32.gt_s + i32.const 1 + i32.shr_u + local.set $4 + local.get $0 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + local.set $2 + local.get $0 + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $2 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|137 + local.get $1 + local.get $11 + i32.lt_s if - local.get $5 - i32.const 3 - i32.shl + local.get $8 + local.get $1 + call $~lib/typedarray/Int32Array#__get + i32.const 7616 + local.get $11 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.ne + br_if $folding-inner18 local.get $1 - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 - i32.const 7520 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_none) - local.get $5 i32.const 1 i32.add - local.set $5 - br $for-loop|075 + local.set $1 + br $for-loop|137 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + i32.const 0 + local.set $9 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0140 + local.get $3 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + local.set $1 + local.get $0 + local.get $2 + local.get $9 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $1 + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0140 + end + end + end + local.get $6 + i32.store offset=16 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $6 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $6 i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58893,7 +57348,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58910,114 +57365,217 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $11 + call $~lib/typedarray/Uint32Array#constructor + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.get $11 + call $~lib/typedarray/Uint32Array#constructor + local.tee $9 i32.store offset=8 - loop $for-loop|028 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|040141 + local.get $1 + local.get $11 + i32.lt_s if - local.get $0 - local.get $3 + local.get $8 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Uint32Array#__set + local.get $9 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|028 + local.set $1 + br $for-loop|040141 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 - local.get $3 - call $~lib/typedarray/Int8Array#__get + local.set $1 + local.get $8 + i32.load offset=4 + local.set $6 + local.get $8 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $4 + local.get $0 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0143 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + local.set $2 + local.get $0 + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $2 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0143 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|141 + local.get $1 + local.get $11 + i32.lt_s + if + local.get $8 + local.get $1 + call $~lib/typedarray/Uint32Array#__get i32.const 7616 - local.get $2 + local.get $11 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.extend8_s i32.ne - br_if $folding-inner24 - local.get $3 + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|1 + local.set $1 + br $for-loop|141 end end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 4 + local.get $9 i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $1 + call $~lib/typedarray/Uint32Array#subarray + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + i32.const 0 + local.set $9 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0145 + local.get $3 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + local.set $1 + local.get $0 + local.get $2 + local.get $9 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $1 + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0145 + end + end + end + local.get $6 i32.store offset=16 - local.get $0 + local.get $6 i32.const 0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 8 i32.ne - br_if $folding-inner25 - local.get $0 + br_if $folding-inner19 + local.get $6 i32.const 1 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 7 i32.ne - br_if $folding-inner26 - local.get $0 + br_if $folding-inner20 + local.get $6 i32.const 2 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 6 i32.ne - br_if $folding-inner27 - local.get $0 + br_if $folding-inner21 + local.get $6 i32.const 3 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 5 i32.ne - br_if $folding-inner28 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59025,7 +57583,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59042,116 +57600,220 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|030 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|044 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $3 + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|030 + local.set $1 + br $for-loop|044 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|131 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0146 + local.get $1 local.get $3 - call $~lib/typedarray/Uint8Array#__get + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0146 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|145 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Int64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - br_if $folding-inner24 - local.get $3 + i64.extend_i32_s + i64.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|131 + local.set $1 + br $for-loop|145 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $1 + call $~lib/typedarray/Int64Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0148 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0148 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59159,7 +57821,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59176,116 +57838,220 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|032 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|048 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|032 + local.set $1 + br $for-loop|048 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|133 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0150 + local.get $1 local.get $3 - call $~lib/typedarray/Uint8ClampedArray#__get + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0150 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|149 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Uint64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - br_if $folding-inner24 - local.get $3 + i64.extend_i32_s + i64.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|133 + local.set $1 + br $for-loop|149 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $1 + call $~lib/typedarray/Uint64Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0152 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0152 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59293,7 +58059,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59310,113 +58076,220 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Float32Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Float32Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|034 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|052110 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $3 + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|034 + local.set $1 + br $for-loop|052110 end end - local.get $0 - call $~lib/typedarray/Int16Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|135 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0153 + local.get $1 local.get $3 - call $~lib/typedarray/Int16Array#__get + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + f32.load + local.set $5 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + f32.load + f32.store + local.get $0 + local.get $5 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0153 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|153 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Float32Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.extend16_s - i32.ne - br_if $folding-inner24 - local.get $3 + f32.convert_i32_s + f32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|135 + local.set $1 + br $for-loop|153 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $1 + call $~lib/typedarray/Float32Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int16Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0155 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 2 + i32.shl + local.get $3 + i32.add + local.tee $0 + f32.load + local.set $5 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 2 + i32.shl + local.get $3 + i32.add + local.tee $0 + f32.load + f32.store + local.get $0 + local.get $5 + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0155 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59424,7 +58297,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59441,120 +58314,219 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Float64Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|037 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|056156 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $3 + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|037 + local.set $1 + br $for-loop|056156 end end - local.get $0 - call $~lib/typedarray/Int16Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|138 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0157 + local.get $1 local.get $3 - call $~lib/typedarray/Uint16Array#__get + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + f64.load + local.set $7 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + f64.load + f64.store + local.get $0 + local.get $7 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0157 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|157 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Float64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - br_if $folding-inner24 - local.get $3 + f64.convert_i32_s + f64.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|138 + local.set $1 + br $for-loop|157 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 + i32.const 4 i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.set $1 + call $~lib/typedarray/Float64Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int16Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0159 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + f64.load + local.set $7 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + f64.load + f64.store + local.get $0 + local.get $7 + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0159 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> @@ -59585,15 +58557,12 @@ i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|0 + loop $while-continue|0160 local.get $0 local.get $3 i32.lt_s @@ -59612,7 +58581,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|0 + br $while-continue|0160 end end i32.const -1 @@ -59630,50 +58599,46 @@ unreachable end i32.const 0 - local.set $5 + local.set $1 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $1 - i32.const 0 - local.get $1 - select + local.tee $2 i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|0289 + loop $while-continue|060 local.get $1 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $5 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.tee $12 - local.get $12 - f64.ne - local.get $12 + local.tee $7 f64.const nan:0x8000000000000 f64.eq - select + local.get $7 + local.get $7 + f64.ne + i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $while-continue|0289 + local.set $1 + br $while-continue|060 end end i32.const 0 @@ -59706,15 +58671,12 @@ i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|0290 + loop $while-continue|062 local.get $0 local.get $3 i32.lt_s @@ -59733,7 +58695,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|0290 + br $while-continue|062 end end i32.const -1 @@ -59751,50 +58713,46 @@ unreachable end i32.const 0 - local.set $5 + local.set $1 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) i32.const 0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - i32.const 0 - local.get $1 - select + local.tee $2 i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|078 + loop $while-continue|064 local.get $1 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $5 + local.get $1 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.tee $11 - local.get $11 - f32.ne - local.get $11 + local.tee $5 f32.const nan:0x400000 f32.eq - select + local.get $5 + local.get $5 + f32.ne + i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $while-continue|078 + local.set $1 + br $while-continue|064 end end i32.const 0 @@ -59815,7 +58773,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59864,7 +58822,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59872,7 +58830,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59898,7 +58856,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59910,7 +58868,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59959,7 +58917,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -59974,7 +58932,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59986,7 +58944,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60035,7 +58993,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -60050,7 +59008,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60062,7 +59020,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60111,7 +59069,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60119,7 +59077,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60145,7 +59103,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60157,7 +59115,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60206,7 +59164,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60214,7 +59172,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60240,7 +59198,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60252,7 +59210,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60301,7 +59259,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60309,7 +59267,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60335,7 +59293,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60347,7 +59305,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60396,7 +59354,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60404,7 +59362,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60430,7 +59388,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60442,7 +59400,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60491,7 +59449,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60499,7 +59457,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60525,7 +59483,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60537,7 +59495,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60586,7 +59544,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60594,7 +59552,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60620,7 +59578,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60632,7 +59590,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60681,7 +59639,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner17 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60689,7 +59647,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60715,7 +59673,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner18 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60727,7 +59685,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60776,7 +59734,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner17 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60784,7 +59742,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60810,7 +59768,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner18 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60862,7 +59820,7 @@ unreachable end i32.const 0 - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60870,7 +59828,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60887,49 +59845,49 @@ local.get $0 i32.const 10940 i32.load - local.tee $3 - call $~lib/typedarray/Int8Array#constructor local.tee $6 + call $~lib/typedarray/Int8Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|041 - local.get $2 - local.get $3 - i32.lt_s + loop $for-loop|069 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 i32.const 10928 - local.get $2 + local.get $9 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|041 + local.set $9 + br $for-loop|069 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 + local.tee $3 i32.store offset=12 i32.const 1 global.set $~argumentsLength @@ -60941,60 +59899,63 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 20 i32.sub i32.load offset=16 - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.store offset=8 local.get $1 - local.get $4 + i32.store offset=8 + local.get $0 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 i32.const 0 - local.set $2 - loop $for-loop|142 - local.get $2 - local.get $3 - i32.lt_s + local.set $9 + loop $for-loop|171 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 call $~lib/typedarray/Int8Array#__get - local.get $1 - local.get $2 + local.get $0 + local.get $9 call $~lib/typedarray/Int8Array#__get i32.ne - br_if $folding-inner29 - local.get $2 + br_if $folding-inner27 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|142 + local.set $9 + br $for-loop|171 end end global.get $~lib/memory/__stack_pointer @@ -61010,7 +59971,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61027,16 +59988,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor local.tee $3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 - loop $for-loop|043 + loop $for-loop|074 local.get $1 - local.get $2 + local.get $3 i32.lt_s if - local.get $3 + local.get $2 local.get $1 i32.const 10928 local.get $1 @@ -61048,26 +60009,26 @@ i32.const 1 i32.add local.set $1 - br $for-loop|043 + br $for-loop|074 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $3 + local.get $2 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $3 + local.get $2 i32.load offset=4 - local.get $3 + local.get $2 i32.load i32.sub local.tee $0 - local.get $0 - local.get $3 + local.get $2 i32.load offset=8 + local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $0 @@ -61082,24 +60043,24 @@ i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|144 + loop $for-loop|177 local.get $1 - local.get $2 + local.get $3 i32.lt_s if - local.get $3 + local.get $2 local.get $1 call $~lib/typedarray/Uint8Array#__get local.get $0 local.get $1 call $~lib/typedarray/Uint8Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|144 + br $for-loop|177 end end global.get $~lib/memory/__stack_pointer @@ -61107,7 +60068,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61115,7 +60076,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61132,50 +60093,50 @@ local.get $0 i32.const 10940 i32.load - local.tee $3 - call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|047 - local.get $2 - local.get $3 - i32.lt_s + loop $for-loop|080131 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 i32.const 10928 - local.get $2 + local.get $9 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|047 + local.set $9 + br $for-loop|080131 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 + local.tee $3 i32.store offset=12 i32.const 1 global.set $~argumentsLength @@ -61187,60 +60148,63 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 20 i32.sub i32.load offset=16 - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.store offset=8 local.get $1 - local.get $4 + i32.store offset=8 + local.get $0 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 i32.const 0 - local.set $2 - loop $for-loop|148 - local.get $2 - local.get $3 - i32.lt_s + local.set $9 + loop $for-loop|183 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 call $~lib/typedarray/Uint8ClampedArray#__get - local.get $1 - local.get $2 + local.get $0 + local.get $9 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne - br_if $folding-inner29 - local.get $2 + br_if $folding-inner27 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|148 + local.set $9 + br $for-loop|183 end end global.get $~lib/memory/__stack_pointer @@ -61256,7 +60220,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61273,16 +60237,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Int16Array#constructor local.tee $6 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|053 + loop $for-loop|086139 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61293,24 +60257,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|053 + br $for-loop|086139 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61327,7 +60291,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61335,54 +60299,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 1 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|154 + loop $for-loop|189 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Int16Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Int16Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|154 + br $for-loop|189 end end global.get $~lib/memory/__stack_pointer @@ -61398,7 +60365,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61415,16 +60382,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint16Array#constructor local.tee $6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|057 + loop $for-loop|092147 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61436,24 +60403,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|057 + br $for-loop|092147 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61470,7 +60437,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61478,54 +60445,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 1 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|158 + loop $for-loop|195 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Uint16Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Uint16Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|158 + br $for-loop|195 end end global.get $~lib/memory/__stack_pointer @@ -61541,7 +60511,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61558,16 +60528,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Int32Array#constructor local.tee $6 + call $~lib/typedarray/Int32Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|060 + loop $for-loop|098155 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61577,24 +60547,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|060 + br $for-loop|098155 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61611,7 +60581,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61619,54 +60589,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 3 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|161 + loop $for-loop|1101 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Int32Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Int32Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|161 + br $for-loop|1101 end end global.get $~lib/memory/__stack_pointer @@ -61682,7 +60655,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61699,16 +60672,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint32Array#constructor local.tee $6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|064 + loop $for-loop|0104163 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61718,24 +60691,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|064 + br $for-loop|0104163 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61752,7 +60725,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61760,54 +60733,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 3 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|165 + loop $for-loop|1107 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Uint32Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Uint32Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|165 + br $for-loop|1107 end end global.get $~lib/memory/__stack_pointer @@ -61823,7 +60799,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61840,16 +60816,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Int64Array#constructor local.tee $6 + call $~lib/typedarray/Int64Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|070 + loop $for-loop|0110 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61860,24 +60836,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|070 + br $for-loop|0110 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61894,7 +60870,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61902,54 +60878,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 7 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|171 + loop $for-loop|1113 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Int64Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Int64Array#__get i64.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|171 + br $for-loop|1113 end end global.get $~lib/memory/__stack_pointer @@ -61965,7 +60944,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61982,16 +60961,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint64Array#constructor local.tee $6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|074 + loop $for-loop|0116 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -62002,24 +60981,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|074 + br $for-loop|0116 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -62036,7 +61015,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62044,54 +61023,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 7 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|175 + loop $for-loop|1119 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Uint64Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Uint64Array#__get i64.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|175 + br $for-loop|1119 end end global.get $~lib/memory/__stack_pointer @@ -62107,7 +61089,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62124,16 +61106,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Float32Array#constructor local.tee $6 + call $~lib/typedarray/Float32Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|077 + loop $for-loop|0122 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -62144,24 +61126,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|077 + br $for-loop|0122 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -62178,7 +61160,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62186,54 +61168,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 3 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|178 + loop $for-loop|1125 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Float32Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Float32Array#__get f32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|178 + br $for-loop|1125 end end global.get $~lib/memory/__stack_pointer @@ -62249,7 +61234,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62266,16 +61251,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Float64Array#constructor local.tee $6 + call $~lib/typedarray/Float64Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|080 + loop $for-loop|0128 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -62286,24 +61271,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|080 + br $for-loop|0128 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -62320,7 +61305,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62328,54 +61313,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 7 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|181 + loop $for-loop|1131 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Float64Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Float64Array#__get f64.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|181 + br $for-loop|1131 end end global.get $~lib/memory/__stack_pointer @@ -62396,105 +61384,107 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $7 + local.tee $6 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 f32.const 400 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const inf call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Int64Array#constructor - local.tee $5 + local.tee $3 i32.store offset=8 - local.get $5 + local.get $3 i32.const 0 i64.const -10 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $3 i32.const 1 i64.const 100 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $3 i32.const 2 i64.const 10 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $3 i32.const 3 i64.const 300 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 2 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 i32.const 300 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $4 i32.const 1 i32.const -1 call $~lib/typedarray/Int32Array#__set - local.get $7 + i32.const 0 + local.set $9 + local.get $6 i32.load offset=8 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.add i32.lt_s - br_if $folding-inner19 - local.get $7 + br_if $folding-inner29 + local.get $6 i32.load offset=4 i32.const 1 i32.add - local.set $4 - local.get $1 + local.set $2 + local.get $0 i32.load offset=4 - local.set $3 - local.get $1 + local.set $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - loop $for-loop|082 - local.get $2 - local.get $16 + local.set $0 + loop $for-loop|0135 + local.get $0 + local.get $9 i32.gt_s if - local.get $4 - local.get $16 + local.get $2 + local.get $9 i32.add - local.get $16 + local.get $9 i32.const 2 i32.shl - local.get $3 + local.get $1 i32.add f32.load - local.tee $11 - local.get $11 + local.tee $5 + local.get $5 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $11 + local.get $5 f32.min f32.max i32.trunc_f32_u @@ -62502,75 +61492,75 @@ i32.const 0 end i32.store8 - local.get $16 + local.get $9 i32.const 1 i32.add - local.set $16 - br $for-loop|082 + local.set $9 + br $for-loop|0135 end end - local.get $7 - local.get $5 + local.get $6 + local.get $3 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 0 - local.set $6 - local.get $7 + local.set $9 + local.get $6 i32.load offset=8 - local.get $0 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u i32.const 8 i32.add i32.lt_s - br_if $folding-inner19 - local.get $7 + br_if $folding-inner29 + local.get $6 i32.load offset=4 i32.const 8 i32.add - local.set $2 - local.get $0 + local.set $3 + local.get $4 i32.load offset=4 - local.set $1 - local.get $0 + local.set $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|086311 - local.get $0 - local.get $6 + local.set $1 + loop $for-loop|0139 + local.get $1 + local.get $9 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $9 i32.add - local.get $6 + i32.const 255 + local.get $9 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load - local.tee $3 - i32.const 255 - local.get $3 + local.tee $0 i32.sub i32.const 31 i32.shr_s + local.get $0 i32.or - local.get $3 + local.get $0 i32.const 31 i32.shr_s i32.const -1 i32.xor i32.and i32.store8 - local.get $6 + local.get $9 i32.const 1 i32.add - local.set $6 - br $for-loop|086311 + local.set $9 + br $for-loop|0139 end end i32.const 10 @@ -62582,7 +61572,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $7 + local.get $6 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer @@ -62628,16 +61618,16 @@ i32.const 300 call $~lib/typedarray/Int16Array#__set i32.const 0 - local.set $6 - local.get $7 + local.set $9 + local.get $6 i32.load offset=8 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.lt_s - br_if $folding-inner19 - local.get $7 + br_if $folding-inner29 + local.get $6 i32.load offset=4 local.set $3 local.get $0 @@ -62648,16 +61638,16 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|090 + loop $for-loop|0143 local.get $1 - local.get $6 + local.get $9 i32.gt_s if local.get $3 - local.get $6 + local.get $9 i32.add i32.const 255 - local.get $6 + local.get $9 i32.const 2 i32.shl local.get $2 @@ -62669,14 +61659,14 @@ i32.gt_u select i32.store8 - local.get $6 + local.get $9 i32.const 1 i32.add - local.set $6 - br $for-loop|090 + local.set $9 + br $for-loop|0143 end end - local.get $7 + local.get $6 local.get $4 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> @@ -62689,7 +61679,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $7 + local.get $6 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> i32.const 0 @@ -62701,7 +61691,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62736,7 +61726,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62771,19 +61761,19 @@ call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15376 i32.store offset=8 @@ -62798,19 +61788,19 @@ call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62824,7 +61814,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62859,15 +61849,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of184 - block $0of185 - block $outOfRange86 + block $1of1161 + block $0of1162 + block $outOfRange163 global.get $~argumentsLength - br_table $0of185 $1of184 $outOfRange86 + br_table $0of1162 $1of1161 $outOfRange163 end unreachable end @@ -62894,19 +61884,19 @@ call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15440 i32.store offset=8 @@ -62921,19 +61911,19 @@ call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62947,7 +61937,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62982,15 +61972,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of188 - block $0of189 - block $outOfRange90 + block $1of1164 + block $0of1165 + block $outOfRange166 global.get $~argumentsLength - br_table $0of189 $1of188 $outOfRange90 + br_table $0of1165 $1of1164 $outOfRange166 end unreachable end @@ -63017,19 +62007,19 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15504 i32.store offset=8 @@ -63044,25 +62034,23 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63070,7 +62058,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63081,23 +62069,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63105,91 +62095,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of192 - block $0of193 - block $outOfRange94 + block $1of1167 + block $0of1168 + block $outOfRange199 global.get $~argumentsLength - br_table $0of193 $1of192 $outOfRange94 + br_table $0of1168 $1of1167 $outOfRange199 end unreachable end i32.const 15536 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15536 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15568 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u i32.const 15568 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63197,7 +62185,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63208,23 +62196,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63232,91 +62222,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of196 - block $0of197 - block $outOfRange98 + block $1of1202 + block $0of1203 + block $outOfRange204 global.get $~argumentsLength - br_table $0of197 $1of196 $outOfRange98 + br_table $0of1203 $1of1202 $outOfRange204 end unreachable end i32.const 15600 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15600 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15632 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u i32.const 15632 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63324,7 +62312,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63335,23 +62323,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63359,91 +62349,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1100 - block $0of1101 - block $outOfRange102 + block $1of1207 + block $0of1208 + block $outOfRange209 global.get $~argumentsLength - br_table $0of1101 $1of1100 $outOfRange102 + br_table $0of1208 $1of1207 $outOfRange209 end unreachable end i32.const 15664 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15664 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15696 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u i32.const 15696 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63451,7 +62439,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63462,23 +62450,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63486,91 +62476,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1104 - block $0of1105 - block $outOfRange106 + block $1of1212 + block $0of1213 + block $outOfRange214 global.get $~argumentsLength - br_table $0of1105 $1of1104 $outOfRange106 + br_table $0of1213 $1of1212 $outOfRange214 end unreachable end i32.const 15728 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15728 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15760 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u i32.const 15760 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63578,7 +62566,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63589,23 +62577,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 0 i64.const 3 call $~lib/typedarray/Int64Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63613,91 +62603,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1108 - block $0of1109 - block $outOfRange110 + block $1of1217 + block $0of1218 + block $outOfRange219 global.get $~argumentsLength - br_table $0of1109 $1of1108 $outOfRange110 + br_table $0of1218 $1of1217 $outOfRange219 end unreachable end i32.const 15792 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15792 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15824 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.const 15824 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63705,7 +62693,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63716,23 +62704,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $1 i32.const 0 i64.const 3 call $~lib/typedarray/Uint64Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63740,91 +62730,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1112 - block $0of1113 - block $outOfRange114 + block $1of1222 + block $0of1223 + block $outOfRange224 global.get $~argumentsLength - br_table $0of1113 $1of1112 $outOfRange114 + br_table $0of1223 $1of1222 $outOfRange224 end unreachable end i32.const 15856 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15856 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15888 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.const 15888 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63832,7 +62820,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63843,23 +62831,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $1 i32.const 0 f32.const 3 call $~lib/typedarray/Float32Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63867,85 +62857,85 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1116 - block $0of1117 - block $outOfRange118 + block $1of1227 + block $0of1228 + block $outOfRange229 global.get $~argumentsLength - br_table $0of1117 $1of1116 $outOfRange118 + br_table $0of1228 $1of1227 $outOfRange229 end unreachable end i32.const 15920 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15920 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15952 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u i32.const 15952 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -63957,7 +62947,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63994,19 +62984,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15984 i32.store offset=8 @@ -64023,19 +63013,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -64046,12 +63036,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|091 + loop $while-continue|0145176 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|091 + br $while-continue|0145176 end end end @@ -64081,213 +63071,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 0 - i32.const 1568 - i32.const 323 - i32.const 3 + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 344 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 345 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 346 + i32.const 345 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 367 + i32.const 346 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 438 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 440 + i32.const 388 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 461 + i32.const 389 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 463 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 484 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 486 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 507 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 509 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 541 + i32.const 484 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 675 - i32.const 5 + i32.const 486 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 676 - i32.const 5 + i32.const 507 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 672 - i32.const 5 + i32.const 509 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 673 - i32.const 5 + i32.const 541 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 388 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 389 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 390 + i32.const 577 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 570 + i32.const 675 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 676 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 672 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 673 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 730 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 730 - i32.const 5 + i32.const 1056 + i32.const 1632 + i32.const 1875 + i32.const 9 call $~lib/builtins/abort unreachable end - i32.const 1056 + i32.const 1360 i32.const 1632 - i32.const 1875 - i32.const 9 + i32.const 1909 + i32.const 47 call $~lib/builtins/abort unreachable end @@ -64367,9 +63357,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -64391,26 +63378,29 @@ local.get $1 local.get $2 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $1 - i32.const 0 local.get $2 + i32.const 0 + local.get $1 call $~lib/memory/memory.fill local.get $0 - local.get $1 + local.get $2 i32.store + local.get $2 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -64878,87 +63868,89 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 - local.tee $3 i32.load offset=8 i32.const 2 i32.shr_u - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $3 i32.load local.tee $5 i32.store - local.get $0 local.get $5 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 local.get $0 - local.get $3 i32.load offset=4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $0 i32.const 2 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $4 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $2 - local.get $1 + local.tee $1 + local.get $0 + local.get $0 local.get $1 - local.get $2 i32.lt_s select - local.get $1 + local.get $0 i32.sub i32.const 2 i32.shl @@ -64967,7 +63959,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -64989,87 +63981,89 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 - local.tee $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $3 i32.load local.tee $5 i32.store - local.get $0 local.get $5 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 local.get $0 - local.get $3 i32.load offset=4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $0 i32.const 3 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $4 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $2 - local.get $1 + local.tee $1 + local.get $0 + local.get $0 local.get $1 - local.get $2 i32.lt_s select - local.get $1 + local.get $0 i32.sub i32.const 3 i32.shl @@ -65078,7 +64072,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) (local $1 i32) @@ -65131,7 +64125,6 @@ (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -65148,51 +64141,54 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store + local.get $4 local.get $0 local.get $1 i32.shl local.tee $4 - local.set $6 + local.set $1 local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.set $1 + local.set $5 local.get $3 if - local.get $1 + local.get $5 local.get $3 - local.get $6 + local.get $1 call $~lib/memory/memory.copy end local.get $5 - local.get $1 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 + local.tee $1 + local.get $5 i32.store - local.get $2 - local.get $1 - call $~lib/rt/itcms/__link - local.get $2 + local.get $5 + if + local.get $1 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 + local.get $5 i32.store offset=4 - local.get $2 + local.get $1 local.get $4 i32.store offset=8 - local.get $2 + 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 $2 + local.get $1 ) (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -65214,90 +64210,92 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 - local.tee $3 i32.load offset=8 - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $3 i32.load local.tee $5 i32.store - local.get $0 local.get $5 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + 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 $4 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 - local.get $3 - i32.load offset=4 + local.tee $0 i32.add i32.store offset=4 - local.get $0 + local.get $4 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $2 - local.get $1 + local.tee $1 + local.get $0 + local.get $0 local.get $1 - local.get $2 i32.lt_s select - local.get $1 + local.get $0 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -65376,11 +64374,11 @@ i32.const 0 i32.gt_s select - local.tee $3 - call $~lib/typedarray/Int32Array#constructor local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.load offset=4 @@ -65388,7 +64386,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -65396,7 +64394,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65422,42 +64420,44 @@ i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 - local.set $4 + local.set $2 local.get $3 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load - local.tee $3 + local.tee $4 i32.store - local.get $0 + local.get $4 + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - call $~lib/rt/itcms/__link local.get $0 + i32.load offset=4 i32.const 4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 4 i32.gt_s select - local.tee $3 - local.get $2 - i32.load offset=4 + local.tee $0 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65467,26 +64467,26 @@ select else local.get $1 - local.get $4 + local.get $2 local.get $1 - local.get $4 + local.get $2 i32.lt_s select end local.tee $1 - local.get $3 + local.get $0 + local.get $0 local.get $1 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65512,42 +64512,44 @@ i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 - local.set $4 + local.set $2 local.get $3 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load - local.tee $3 + local.tee $4 i32.store - local.get $0 + local.get $4 + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - call $~lib/rt/itcms/__link local.get $0 + i32.load offset=4 i32.const 4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 4 i32.gt_s select - local.tee $3 - local.get $2 - i32.load offset=4 + local.tee $0 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65557,26 +64559,26 @@ select else local.get $1 - local.get $4 + local.get $2 local.get $1 - local.get $4 + local.get $2 i32.lt_s select end local.tee $1 - local.get $3 + local.get $0 + local.get $0 local.get $1 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65598,50 +64600,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65651,19 +64655,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 1 i32.shl @@ -65672,7 +64676,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65694,50 +64698,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65747,19 +64753,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 1 i32.shl @@ -65768,7 +64774,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65790,50 +64796,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 2 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65843,19 +64851,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 2 i32.shl @@ -65864,7 +64872,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65886,50 +64894,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 3 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65939,19 +64949,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 3 i32.shl @@ -65960,7 +64970,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65982,50 +64992,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 3 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -66035,19 +65047,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 3 i32.shl @@ -66056,7 +65068,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66078,50 +65090,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 2 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -66131,19 +65145,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 2 i32.shl @@ -66152,7 +65166,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -66194,71 +65208,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -66266,7 +65280,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66299,6 +65313,8 @@ i32.shr_u local.tee $2 local.get $2 + i32.const 0 + i32.gt_u select local.tee $3 local.get $1 @@ -66329,10 +65345,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $1 local.get $4 i32.sub - local.tee $1 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -66346,7 +65362,7 @@ local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.eq local.get $4 select @@ -66359,22 +65375,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 local.get $0 local.get $4 i32.add - local.get $1 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) @@ -66409,68 +65425,67 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 local.get $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 $2 + local.get $1 ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) @@ -66679,21 +65694,89 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 local.get $1 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end ) ) diff --git a/tests/compiler/std/uri.optimized.wat b/tests/compiler/std/uri.optimized.wat index 1cba4a4eec..c77e1bd517 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -156,11 +156,11 @@ (local $0 i32) (local $1 i32) i32.const 1376 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1584 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -199,160 +199,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 20748 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 4336 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1376 - i32.const 1440 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 4340 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -389,11 +235,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -405,28 +250,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -438,19 +280,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -475,9 +317,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -485,17 +327,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -623,7 +465,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -634,7 +476,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -654,44 +496,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -701,7 +542,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -711,20 +552,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -752,7 +593,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -779,15 +620,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -799,15 +637,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -828,6 +666,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -837,7 +678,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -874,8 +715,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1034,7 +875,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1159,7 +1004,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1169,7 +1014,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1182,14 +1027,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1214,56 +1058,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1364,12 +1205,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1385,14 +1226,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1403,18 +1244,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1425,54 +1265,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1480,16 +1316,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1497,15 +1333,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1533,12 +1369,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1552,7 +1388,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1562,7 +1398,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1580,12 +1416,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1615,8 +1451,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1645,19 +1481,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1666,18 +1502,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1686,10 +1522,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1698,97 +1534,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1820,7 +1656,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1835,17 +1671,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1991,19 +1827,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2018,7 +1854,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2029,10 +1865,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2040,10 +1876,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2054,7 +1890,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2084,17 +1920,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2109,7 +1945,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2120,10 +1956,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2131,10 +1967,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2145,7 +1981,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2171,17 +2007,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2196,7 +2032,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2207,10 +2043,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2218,10 +2054,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2232,7 +2068,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2269,131 +2105,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2410,59 +2224,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2479,7 +2287,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2490,11 +2298,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2508,17 +2316,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2729,7 +2537,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -2738,28 +2546,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/util/uri/encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2778,33 +2586,33 @@ local.get $1 i32.const 1 i32.shl - local.tee $9 + local.tee $8 i32.const 1 call $~lib/rt/itcms/__new local.set $3 loop $while-continue|0 local.get $1 - local.get $7 + local.get $4 i32.gt_u if block $while-break|0 - local.get $7 + local.get $4 local.set $5 loop $do-loop|1 block $do-break|1 - local.get $7 + local.get $4 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u - local.tee $4 + local.tee $6 i32.const 33 i32.sub i32.const 94 i32.ge_u br_if $do-break|1 - local.get $4 + local.get $6 i32.const 33 i32.sub local.get $2 @@ -2812,71 +2620,70 @@ i32.load8_u br_if $do-break|1 local.get $1 - local.get $7 + local.get $4 i32.const 1 i32.add - local.tee $7 + local.tee $4 i32.gt_u br_if $do-loop|1 end end + local.get $4 local.get $5 - local.get $7 - i32.lt_u + i32.gt_u if - local.get $9 - local.get $6 + local.get $8 local.get $7 + local.get $4 local.get $5 i32.sub i32.const 1 i32.shl - local.tee $8 + local.tee $9 i32.add i32.lt_u if local.get $3 - local.get $6 - local.get $8 + local.get $7 + local.get $9 i32.add - local.tee $9 + local.tee $8 call $~lib/rt/itcms/__renew local.set $3 end local.get $3 - local.get $6 + local.get $7 i32.add local.get $5 i32.const 1 i32.shl local.get $0 i32.add - local.get $8 + local.get $9 call $~lib/memory/memory.copy - local.get $6 - local.get $8 + local.get $7 + local.get $9 i32.add - local.set $6 + local.set $7 local.get $1 - local.get $7 + local.get $4 i32.le_u br_if $while-break|0 end - local.get $9 + local.get $8 i32.const 6 i32.const 24 - local.get $4 + local.get $6 i32.const 55296 i32.ge_u if - local.get $4 + local.get $6 i32.const 57343 i32.le_u - i32.const 0 - local.get $4 + local.get $6 i32.const 56320 i32.ge_u - select + i32.and if i32.const 1584 i32.const 1632 @@ -2885,12 +2692,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const 56319 i32.le_u if (result i32) local.get $1 - local.get $7 + local.get $4 i32.le_u if i32.const 1584 @@ -2900,23 +2707,22 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - local.get $7 + local.get $4 i32.const 1 i32.add - local.tee $7 + local.tee $4 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u local.tee $5 - i32.const 57343 - i32.gt_u - local.get $5 i32.const 56320 i32.lt_u - select + local.get $5 + i32.const 57343 + i32.gt_u + i32.or if i32.const 1584 i32.const 1632 @@ -2928,7 +2734,7 @@ local.get $5 i32.const 1023 i32.and - local.get $4 + local.get $6 i32.const 1023 i32.and i32.const 10 @@ -2937,45 +2743,44 @@ i32.const 65536 i32.add else - local.get $4 + local.get $6 end - local.set $4 + local.set $6 end - local.get $4 + local.get $6 i32.const 128 i32.lt_u select - local.get $6 - local.tee $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.lt_u if local.get $3 - local.get $6 + local.get $5 i32.const 1 i32.shl - local.get $6 + local.get $5 local.get $1 i32.const 1 i32.gt_u select - local.tee $9 + local.tee $8 call $~lib/rt/itcms/__renew local.set $3 end - local.get $4 + local.get $6 i32.const 128 i32.lt_u - if (result i32) + if local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 4 i32.shr_u i32.const 15 @@ -2983,7 +2788,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $4 + local.get $6 i32.const 15 i32.and i32.const 1676 @@ -2993,28 +2798,24 @@ i32.shl i32.or i32.store offset=2 - local.get $5 - i32.const 6 - i32.add else - local.get $3 - local.get $4 + local.get $6 i32.const 2048 i32.lt_u - if (result i32) + if local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 15 @@ -3022,7 +2823,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3032,28 +2833,25 @@ i32.shl i32.or i32.store offset=2 - local.get $5 - i32.const 6 - i32.add else local.get $3 - local.get $4 + local.get $6 i32.const 65536 i32.lt_u if local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 15 @@ -3061,7 +2859,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3073,18 +2871,18 @@ i32.store offset=2 else local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 18 i32.shr_u i32.const 240 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 15 @@ -3092,7 +2890,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3103,29 +2901,29 @@ i32.or i32.store offset=2 local.get $3 - local.get $5 + local.get $7 i32.const 6 i32.add - local.tee $5 + local.tee $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 12 i32.shr_u i32.const 63 i32.and i32.const 128 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3136,29 +2934,29 @@ i32.or i32.store offset=2 end - local.get $5 + local.get $7 i32.const 6 i32.add - local.tee $6 + local.tee $7 i32.add local.tee $5 i32.const 37 i32.store16 local.get $5 - local.get $4 + local.get $6 i32.const 6 i32.shr_u i32.const 63 i32.and i32.const 128 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3168,28 +2966,29 @@ i32.shl i32.or i32.store offset=2 - local.get $6 - i32.const 6 - i32.add end - local.tee $6 + local.get $3 + local.get $7 + i32.const 6 + i32.add + local.tee $7 i32.add local.tee $5 i32.const 37 i32.store16 local.get $5 - local.get $4 + local.get $6 i32.const 63 i32.and i32.const 128 i32.or - local.tee $4 + local.tee $5 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $4 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3199,25 +2998,25 @@ i32.shl i32.or i32.store offset=2 - local.get $6 - i32.const 6 - i32.add end - local.set $6 local.get $7 - i32.const 1 + i32.const 6 i32.add local.set $7 + local.get $4 + i32.const 1 + i32.add + local.set $4 br $while-continue|0 end end end - local.get $6 - local.get $9 + local.get $7 + local.get $8 i32.lt_u if (result i32) local.get $3 - local.get $6 + local.get $7 call $~lib/rt/itcms/__renew else local.get $3 @@ -3249,7 +3048,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -3263,32 +3062,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -3305,29 +3103,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3421,7 +3219,6 @@ i32.le_u br_if $while-break|0 end - i32.const 1 local.get $5 i32.const 37 i32.ne @@ -3430,16 +3227,16 @@ i32.const 2 i32.add i32.le_u - select + i32.or if (result i32) i32.const 1 else + local.get $0 local.get $3 i32.const 1 i32.add i32.const 1 i32.shl - local.get $0 i32.add local.tee $4 i32.load16_u @@ -3448,24 +3245,19 @@ i32.load16_u offset=2 local.set $4 local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $5 i32.const 32 i32.or i32.const 97 i32.sub i32.const 6 i32.lt_u + local.get $5 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or if (result i32) - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u local.get $4 i32.const 32 i32.or @@ -3473,6 +3265,11 @@ i32.sub i32.const 6 i32.lt_u + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or else i32.const 0 @@ -3559,7 +3356,7 @@ i32.const 56 i32.lt_u select - local.tee $9 + local.tee $4 i32.const 17 i32.mul i32.const 2 @@ -3567,23 +3364,23 @@ i32.const 1 i32.sub i32.shl - local.set $10 + local.set $9 i32.const 128 - local.get $9 + local.get $4 i32.shr_u i32.const 1 i32.sub i32.const 0 - local.get $9 + local.get $4 select local.get $5 i32.and local.set $5 loop $while-continue|2 - local.get $9 + local.get $4 i32.const 1 i32.sub - local.tee $9 + local.tee $4 if block $while-break|2 local.get $1 @@ -3606,58 +3403,58 @@ if (result i32) i32.const 1 else + local.get $0 local.get $3 i32.const 1 i32.add i32.const 1 i32.shl - local.get $0 i32.add - local.tee $7 + local.tee $10 i32.load16_u - local.set $4 - local.get $7 - i32.load16_u offset=2 local.set $7 - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $4 + local.get $10 + i32.load16_u offset=2 + local.set $10 + local.get $7 i32.const 32 i32.or i32.const 97 i32.sub i32.const 6 i32.lt_u + local.get $7 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or if (result i32) - local.get $7 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $7 + local.get $10 i32.const 32 i32.or i32.const 97 i32.sub i32.const 6 i32.lt_u + local.get $10 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or else i32.const 0 end if (result i32) - local.get $7 + local.get $10 i32.const 32 i32.or i32.const 39 i32.rem_u i32.const 9 i32.sub - local.get $4 + local.get $7 i32.const 32 i32.or i32.const 39 @@ -3708,31 +3505,25 @@ end end end - i32.const 1 local.get $5 - i32.const 1114111 - i32.gt_u - i32.const 1 - local.get $10 + i32.const 57344 + i32.lt_u + local.get $5 + i32.const 55296 + i32.ge_u + i32.and + local.get $9 i32.const -1 i32.eq local.get $5 - local.get $10 + local.get $9 i32.lt_u - select - select - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 57344 - i32.lt_u - i32.const 0 - local.get $5 - i32.const 55296 - i32.ge_u - select - end + i32.or + local.get $5 + i32.const 1114111 + i32.gt_u + i32.or + i32.or if i32.const 1584 i32.const 1632 @@ -3831,7 +3622,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -5417,4 +5208,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 20748 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 4336 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1376 + i32.const 1440 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 4340 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index a5eddee6b7..86fca127d2 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.untouched.wat @@ -4274,22 +4274,9 @@ i32.sub i32.const 10 i32.lt_u - local.get $4 - i32.const 32 - i32.or - i32.const 97 - i32.sub - i32.const 6 - i32.lt_u - i32.or if (result i32) - local.get $3 - local.set $4 - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u + i32.const 1 + else local.get $4 i32.const 32 i32.or @@ -4297,7 +4284,26 @@ i32.sub i32.const 6 i32.lt_u - i32.or + end + if (result i32) + local.get $3 + local.set $4 + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end else i32.const 0 end diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index 54c425d215..cb404d4a83 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,18 +42,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $super-inline/bar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -92,160 +92,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17868 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -282,11 +128,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +143,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +173,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +210,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +220,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +358,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +369,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +389,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +435,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +445,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +486,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +513,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +530,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +559,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +571,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +608,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +768,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +897,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +907,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +920,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1112,9 +956,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1130,13 +974,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1146,9 +990,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1218,17 +1062,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1241,16 +1085,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1258,15 +1102,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1293,12 +1137,12 @@ 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 $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1308,7 +1152,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1161,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1359,8 +1203,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1412,7 +1256,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1424,11 +1268,11 @@ ) (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 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1563,4 +1407,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17868 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 44041fd406..0df9b0401a 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -1,8 +1,8 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) @@ -162,7 +162,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -176,32 +176,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -218,29 +217,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -256,13 +255,13 @@ (local $0 i32) (local $1 i32) i32.const 1408 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1216 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2464 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3520 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -329,7 +328,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -352,7 +351,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -362,15 +361,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -435,30 +434,6 @@ 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) @@ -495,11 +470,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -511,28 +485,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -544,19 +515,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -581,9 +552,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -591,17 +562,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -729,7 +700,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -740,7 +711,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -760,44 +731,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -807,7 +777,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -817,20 +787,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -858,7 +828,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -885,15 +855,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -905,15 +872,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -934,6 +901,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -943,7 +913,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -980,8 +950,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1140,7 +1110,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1265,7 +1239,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1275,7 +1249,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1288,14 +1262,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1320,56 +1293,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + 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 $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1470,12 +1440,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1491,14 +1461,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1509,18 +1479,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1531,54 +1500,50 @@ call $~lib/builtins/abort unreachable end - local.get $3 i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 + i32.const 12 + i32.le_u + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1586,16 +1551,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1603,15 +1568,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1639,12 +1604,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1658,7 +1623,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1668,7 +1633,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1686,12 +1651,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1721,8 +1686,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1751,19 +1716,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1772,18 +1737,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1792,10 +1757,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1804,97 +1769,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1926,7 +1891,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1941,17 +1906,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2097,19 +2062,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2124,7 +2089,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2135,10 +2100,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2146,10 +2111,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2160,7 +2125,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2190,17 +2155,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2215,7 +2180,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2226,10 +2191,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2237,10 +2202,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2251,7 +2216,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2277,17 +2242,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2302,7 +2267,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2313,10 +2278,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2324,10 +2289,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2338,7 +2303,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2375,131 +2340,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2516,59 +2459,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2585,7 +2522,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2596,11 +2533,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2614,17 +2551,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2829,64 +2766,20 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 - i32.eqz - if - return - end + i32.const 2 + i32.shl local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.add + local.get $2 + i32.store + local.get $2 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 - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link end ) (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) @@ -2896,37 +2789,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray - local.get $3 + block $__inlined_func$~lib/util/string/joinStringArray (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 0 + i32.store offset=8 + local.get $4 i32.const 1 i32.sub local.tee $5 @@ -2938,19 +2831,18 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1184 - local.set $3 br $__inlined_func$~lib/util/string/joinStringArray end local.get $5 i32.eqz if global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 local.get $0 i32.load local.tee $0 i32.store - local.get $3 + local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -2958,16 +2850,15 @@ i32.const 1184 local.get $0 select - local.set $3 br $__inlined_func$~lib/util/string/joinStringArray end loop $for-loop|0 local.get $3 local.get $4 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 2 i32.shl local.get $0 @@ -2983,93 +2874,93 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.get $2 + local.get $1 i32.add - local.set $2 + local.set $1 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 1180 i32.load i32.const 1 i32.shr_u - local.tee $6 + local.tee $1 + local.get $5 i32.mul - local.get $2 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store offset=8 i32.const 0 - local.set $4 + local.set $3 loop $for-loop|1 - local.get $4 + local.get $3 local.get $5 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.tee $2 + local.tee $6 i32.store offset=4 - local.get $2 + local.get $6 if - local.get $1 + local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add - local.get $2 - local.get $2 + local.get $6 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $1 local.get $2 + local.get $6 i32.add - local.set $1 + local.set $2 end - local.get $6 + local.get $1 if - local.get $1 + local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.const 1184 - local.get $6 + local.get $1 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $1 - local.get $6 + local.get $2 i32.add - local.set $1 + local.set $2 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|1 end end @@ -3084,10 +2975,10 @@ i32.store offset=4 local.get $0 if - local.get $1 + local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add local.get $0 local.get $0 @@ -3104,8 +2995,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3215,25 +3106,25 @@ (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 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - 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 + block $__inlined_func$~lib/util/number/itoa32 (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 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + 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 @@ -3242,7 +3133,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 2032 - local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -3253,71 +3143,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -3325,8 +3215,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 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) @@ -3361,8 +3251,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -3585,22 +3474,20 @@ i32.shl i32.const 3918 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -3614,7 +3501,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -3630,7 +3517,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -3710,22 +3597,20 @@ i32.shl i32.const 3918 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -3739,7 +3624,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -3755,16 +3640,13 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 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 $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -3783,18 +3665,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -3811,27 +3692,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -3853,19 +3733,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -3882,7 +3761,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -3900,7 +3779,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -3911,24 +3790,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -3974,20 +3852,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -4010,20 +3885,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -4031,63 +3905,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -4104,22 +3975,21 @@ (local $1 i64) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) - (local $15 i64) local.get $0 f64.const 0 f64.lt - local.tee $5 + local.tee $2 if (result f64) i32.const 3920 i32.const 45 @@ -4136,19 +4006,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 1 - local.get $2 + local.get $6 select i32.const 1075 i32.sub - local.tee $9 + local.tee $7 i32.const 1 i32.sub local.get $1 i64.const 4503599627370495 i64.and - local.get $2 + local.get $6 i32.const 0 i32.ne i64.extend_i32_u @@ -4163,11 +4033,11 @@ local.tee $3 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i32.sub - local.set $2 + local.set $8 local.get $3 - local.get $4 + local.get $6 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -4177,25 +4047,25 @@ i64.eq i32.const 1 i32.add - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 - local.get $4 + local.get $7 + local.get $6 i32.sub - local.get $2 + local.get $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $8 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $6 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -4204,9 +4074,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $7 local.get $0 - local.get $2 + local.get $7 f64.convert_i32_s f64.ne i32.add @@ -4214,18 +4084,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $7 i32.const 3 i32.shl - local.tee $4 + local.tee $8 i32.sub global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 3976 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $7 i32.const 1 i32.shl i32.const 4672 @@ -4243,77 +4113,77 @@ local.get $1 i64.const 32 i64.shr_u - local.tee $10 + local.tee $9 global.get $~lib/util/number/_frc_pow - local.tee $13 + local.tee $10 i64.const 4294967295 i64.and + local.tee $11 local.tee $1 - local.tee $6 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul i64.const 32 i64.shr_u i64.add - local.set $6 + local.set $4 global.get $~lib/util/number/_frc_plus - local.tee $7 + local.tee $1 i64.const 4294967295 i64.and - local.set $11 - local.get $7 + local.set $12 + local.get $1 i64.const 32 i64.shr_u - local.tee $14 - local.get $1 + local.tee $1 + local.get $11 i64.mul - local.get $1 local.get $11 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $7 + local.set $5 global.get $~lib/util/number/_frc_minus - local.tee $8 + local.tee $13 i64.const 4294967295 i64.and - local.set $12 - local.get $8 + local.set $14 + local.get $13 i64.const 32 i64.shr_u - local.tee $15 - local.get $1 + local.tee $13 + local.get $11 i64.mul - local.get $1 - local.get $12 + local.get $11 + local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $8 - local.get $5 + local.set $11 + local.get $2 i32.const 1 i32.shl i32.const 3920 i32.add + local.get $9 local.get $10 - local.get $13 i64.const 32 i64.shr_u - local.tee $1 + local.tee $9 local.tee $10 i64.mul - local.get $6 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $3 local.get $10 i64.mul - local.get $6 + local.get $4 i64.const 4294967295 i64.and i64.add @@ -4323,16 +4193,16 @@ i64.shr_u i64.add local.get $1 - local.get $14 + local.get $9 i64.mul - local.get $7 + local.get $5 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $11 + local.get $9 + local.get $12 i64.mul - local.get $7 + local.get $5 i64.const 4294967295 i64.and i64.add @@ -4343,24 +4213,24 @@ i64.add i64.const 1 i64.sub - local.tee $3 + local.tee $1 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $6 i32.add i32.const -64 i32.sub - local.get $3 local.get $1 - local.get $15 + local.get $9 + local.get $13 i64.mul - local.get $8 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $12 + local.get $9 + local.get $14 i64.mul - local.get $8 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -4372,37 +4242,37 @@ i64.const 1 i64.add i64.sub - local.get $5 + local.get $2 call $~lib/util/number/genDigits - local.get $5 + local.get $2 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $5 + 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 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - 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/dtoa + block $__inlined_func$~lib/util/number/dtoa (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 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + 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 f64.const 0 f64.eq @@ -4412,7 +4282,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3776 - local.set $1 br $__inlined_func$~lib/util/number/dtoa end local.get $0 @@ -4430,7 +4299,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3808 - local.set $1 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -4443,77 +4311,76 @@ f64.const 0 f64.lt select - local.set $1 br $__inlined_func$~lib/util/number/dtoa end local.get $0 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - i32.const 3920 local.get $2 + i32.const 3920 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 end - 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 22116 - 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 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 + memory.size + i32.const 16 + i32.shl + i32.const 22116 + 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 24 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4571,28 +4438,21 @@ global.get $~lib/memory/__stack_pointer i32.const 1744 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 + i32.const 1056 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 1744 i32.store offset=16 - i32.const 1756 - i32.const 1088 - i32.store i32.const 1744 + i32.const 3 i32.const 1088 - i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 1744 i32.store offset=16 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=20 i32.const 1744 @@ -4627,7 +4487,7 @@ global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4706,28 +4566,21 @@ global.get $~lib/memory/__stack_pointer i32.const 3680 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 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 3680 i32.store offset=8 - i32.const 3692 - local.get $1 - i32.store i32.const 3680 + i32.const 3 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 3680 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=12 i32.const 3680 @@ -4762,7 +4615,7 @@ global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4841,28 +4694,21 @@ global.get $~lib/memory/__stack_pointer i32.const 4976 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 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 4976 i32.store offset=8 - i32.const 4988 - local.get $1 - i32.store i32.const 4976 + i32.const 3 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 4976 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=12 i32.const 4976 @@ -4890,14 +4736,15 @@ i32.const 24 i32.add global.set $~lib/memory/__stack_pointer + call $templateliteral/test_fast_paths_string global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4906,233 +4753,31 @@ i64.const 0 i64.store offset=8 local.get $0 - i32.const 0 - i32.store offset=16 + i64.const 0 + i64.store offset=16 local.get $0 - i32.const 1088 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 1 + call $templateliteral/Ref#constructor + local.tee $2 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 - global.get $~lib/memory/__stack_pointer - i32.const 5072 - i32.store offset=8 - 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=8 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5104 - i32.store offset=12 i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=8 - 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 5104 - i32.store offset=12 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store offset=8 - 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.tee $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 5200 - i32.store offset=16 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5232 - i32.store offset=8 - 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 5200 - i32.store offset=16 - 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 - global.get $~lib/memory/__stack_pointer - i32.const 5264 - i32.store offset=8 - local.get $0 - i32.const 5264 - call $~lib/string/String.__eq - i32.eqz - if - 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=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 - global.get $~lib/memory/__stack_pointer - i32.const 5296 - i32.store offset=8 - 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 20 - 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 5732 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 1 call $templateliteral/Ref#constructor local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $templateliteral/Ref#constructor - local.tee $1 i32.store offset=4 - local.get $0 + local.get $2 call $templateliteral/Ref#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5360 i32.store offset=12 - local.get $2 + local.get $1 i32.const 5360 call $~lib/string/String.__eq i32.eqz @@ -5144,29 +4789,29 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 call $templateliteral/Ref#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 local.get $1 + i32.store offset=16 + local.get $0 call $templateliteral/Ref#toString local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=20 - local.get $2 + local.get $1 local.get $3 call $~lib/string/String#concat - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5392 i32.store offset=12 - local.get $2 + local.get $1 i32.const 5392 call $~lib/string/String.__eq i32.eqz @@ -5179,40 +4824,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 call $templateliteral/Ref#toString - local.tee $0 + local.tee $1 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $templateliteral/Ref#toString - local.tee $1 + local.tee $0 i32.store offset=28 global.get $~lib/memory/__stack_pointer i32.const 5440 i32.store offset=16 - i32.const 5444 - local.get $0 - i32.store i32.const 5440 - local.get $0 i32.const 1 - call $~lib/rt/itcms/__link + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 5440 i32.store offset=16 - i32.const 5452 - local.get $1 - i32.store i32.const 5440 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + i32.const 3 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 5440 i32.store offset=16 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=20 i32.const 5440 @@ -5247,7 +4885,7 @@ global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -5312,100 +4950,311 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 22144 - i32.const 22192 - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - local.get $0 - local.tee $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - 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 $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - return - end - return - end - local.get $0 - local.tee $1 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.load offset=4 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - return + i32.const 22144 + i32.const 22192 + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.get $0 + i32.add + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~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 + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:templateliteral + ) + (func $templateliteral/test_fast_paths_string + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 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 + global.get $~lib/memory/__stack_pointer + i32.const 5072 + i32.store offset=8 + 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=8 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=12 + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=8 + 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 5104 + i32.store offset=12 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=8 + 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.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 5200 + i32.store offset=16 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 5232 + i32.store offset=8 + 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 5200 + i32.store offset=16 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=8 + local.get $0 + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable end - unreachable - ) - (func $~start - global.get $~started + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 5296 + i32.store offset=8 + local.get $0 + i32.const 5296 + call $~lib/string/String.__eq + i32.eqz if - return + i32.const 0 + i32.const 1120 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - call $start:templateliteral + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $templateliteral/Ref#toString (param $0 i32) (result i32) (local $1 i32) @@ -5477,9 +5326,9 @@ local.get $1 local.get $0 i32.load offset=4 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -5491,13 +5340,13 @@ return end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.load local.tee $0 i32.store offset=4 - local.get $2 local.get $1 + local.get $2 call $templateliteral/RecursiveObject#toString local.tee $1 i32.store offset=8 @@ -5507,20 +5356,26 @@ i32.const 5620 local.get $0 i32.store - i32.const 5616 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link + if + i32.const 5616 + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=12 i32.const 5628 local.get $1 i32.store - i32.const 5616 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + i32.const 5616 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 5616 @@ -5565,7 +5420,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -5574,9 +5429,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -5587,26 +5442,26 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $templateliteral/Ref#constructor (param $0 i32) (result i32) (local $1 i32) @@ -5674,21 +5529,100 @@ local.get $2 local.get $0 i32.store - local.get $2 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 local.get $1 i32.store offset=4 - local.get $2 local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + 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 $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + 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 + ) ) diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index 4d5708a9b9..fc72802671 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -49,7 +49,7 @@ (local $0 i32) (local $1 i32) i32.const 1488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -88,163 +88,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $3 - i32.eqz - if - i32.const 0 - local.get $1 - i32.const 18140 - i32.lt_u - local.get $1 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $1 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $3 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $3 - local.get $0 - local.tee $1 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - local.tee $0 - i32.const 1728 - i32.load - i32.gt_u - if - i32.const 1488 - i32.const 1552 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1732 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $0 - local.get $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $3 - 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) @@ -281,11 +124,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -297,28 +139,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -330,19 +169,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -367,9 +206,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -377,17 +216,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -515,7 +354,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -526,7 +365,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -546,44 +385,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -593,7 +431,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -603,20 +441,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -644,7 +482,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -735,7 +573,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -800,19 +642,19 @@ return end global.get $~lib/rt/itcms/iter - local.tee $0 + local.tee $1 global.get $~lib/rt/itcms/toSpace i32.ne if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $3 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 i32.const 3 i32.and i32.ne @@ -824,19 +666,19 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 18140 i32.lt_u if - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 else global.get $~lib/rt/itcms/total - local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -844,7 +686,7 @@ i32.add i32.sub global.set $~lib/rt/itcms/total - local.get $0 + local.get $1 i32.const 4 i32.add local.tee $3 @@ -854,12 +696,10 @@ global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - local.set $0 memory.size local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $1 @@ -926,7 +766,7 @@ memory.size i32.const 16 i32.shl - local.tee $1 + local.tee $0 i32.const 19716 i32.lt_u if @@ -937,14 +777,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const -16 i32.and i32.const 19712 i32.load - local.tee $1 + local.tee $0 if (result i32) - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 19724 @@ -957,11 +797,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 19708 i32.eq if (result i32) - local.get $1 + local.get $0 i32.load local.set $2 i32.const 19708 @@ -1017,7 +857,7 @@ local.get $3 i32.const 4 i32.sub - local.set $0 + local.set $1 local.get $3 i32.const 15 i32.and @@ -1027,7 +867,7 @@ if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1040,13 +880,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock end end @@ -1114,7 +954,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1123,146 +963,291 @@ (func $~start (local $0 i32) (local $1 i32) - block $__inlined_func$start:throw + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1056 + i32.store + local.get $1 + i32.const 1216 + i32.store offset=8 + local.get $1 i32.const 12 + 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 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1216 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1056 + i32.store + loop $while-continue|0 local.get $0 - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1756 + local.tee $0 + i32.const 10 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1056 - i32.store - loop $while-continue|0 + if + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 - i32.lt_s + i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=8 - i32.const 1248 - i32.const 1168 - i32.const 23 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1296 + i32.const 1216 i32.store offset=8 - br $while-continue|0 + i32.const 1248 + i32.const 1168 + i32.const 23 + i32.const 7 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=8 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1328 - i32.store offset=12 - local.get $0 - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/pinSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/toSpace - i32.const 1588 - i32.const 1584 - i32.store - i32.const 1592 - i32.const 1584 - i32.store - i32.const 1584 - global.set $~lib/rt/itcms/fromSpace - memory.size - drop + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1328 + i32.store offset=12 + local.get $0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/toSpace + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + i32.store + i32.const 1584 + global.set $~lib/rt/itcms/fromSpace + memory.size + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|07 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|07 + end + end + end + call $~lib/rt/itcms/step + loop $while-continue|1 global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s if - loop $while-continue|00 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - br $while-continue|00 - end - end + call $~lib/rt/itcms/step + br $while-continue|1 end - call $~lib/rt/itcms/step - loop $while-continue|1 - global.get $~lib/rt/itcms/state + end + return + end + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18140 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz if - call $~lib/rt/itcms/step - br $while-continue|1 + i32.const 0 + i32.const 1392 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable end - br $__inlined_func$start:throw + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 end - i32.const 18160 - i32.const 18208 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1728 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1488 + i32.const 1552 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 5a3c286aea..1c629d6406 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -80,7 +80,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -94,32 +94,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -136,29 +135,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -174,17 +173,17 @@ (local $0 i32) (local $1 i32) i32.const 1264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $typeof/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1552 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -223,160 +222,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18220 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1792 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1552 - i32.const 1616 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1796 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -413,11 +258,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -429,28 +273,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -462,19 +303,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -499,9 +340,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -509,17 +350,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -647,7 +488,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -658,7 +499,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -678,44 +519,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -725,7 +565,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -735,20 +575,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -776,7 +616,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -803,15 +643,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -823,15 +660,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -852,6 +689,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -861,7 +701,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -898,8 +738,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1058,7 +898,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1183,7 +1027,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1193,7 +1037,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1206,14 +1050,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1243,9 +1086,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1261,13 +1104,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1277,9 +1120,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1315,13 +1158,17 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -1738,7 +1585,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1747,12 +1594,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $1 + local.set $0 loop $do-loop|0 - local.get $1 + local.get $0 call $~lib/rt/itcms/step i32.sub - local.set $1 + local.set $0 global.get $~lib/rt/itcms/state i32.eqz if @@ -1768,14 +1615,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 + local.get $0 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1794,15 +1641,15 @@ global.get $~lib/rt/tlsf/ROOT local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if memory.size - local.tee $2 + local.tee $0 i32.const 4 local.get $3 i32.load offset=1568 - local.get $2 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1815,16 +1662,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $1 + local.tee $2 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1833,7 +1680,7 @@ end end local.get $3 - local.get $2 + local.get $0 i32.const 16 i32.shl memory.size @@ -1842,7 +1689,7 @@ call $~lib/rt/tlsf/addMemory local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1853,7 +1700,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1868,49 +1715,49 @@ unreachable end local.get $3 - local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load - local.tee $2 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if - local.get $1 - local.get $2 + local.get $0 + local.get $4 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $3 - local.get $2 + local.get $4 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $2 + local.get $0 + local.get $4 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1922,37 +1769,37 @@ i32.and i32.store end - local.get $1 + local.get $0 i32.const 4 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $2 i32.load offset=8 - local.set $4 - local.get $1 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $0 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.store offset=8 - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1960,8 +1807,8 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 local.get $1 + local.get $0 i32.const 20 i32.add local.tee $0 @@ -2080,4 +1927,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18220 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1792 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1552 + i32.const 1616 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 + ) ) diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat index e2fda4418a..187f41a7a7 100644 --- a/tests/compiler/unary.optimized.wat +++ b/tests/compiler/unary.optimized.wat @@ -48,12 +48,9 @@ global.set $unary/i i32.const -1 global.set $unary/i - i32.const -1 - local.tee $0 - i32.const 1 - i32.sub + i32.const -2 global.set $unary/i - local.get $0 + i32.const -1 global.set $unary/i global.get $unary/I i64.const 1 @@ -93,12 +90,9 @@ global.set $unary/I i64.const -1 global.set $unary/I - i64.const -1 - local.tee $1 - i64.const 1 - i64.sub + i64.const -2 global.set $unary/I - local.get $1 + i64.const -1 global.set $unary/I global.get $unary/f f32.const 1 diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index c3bd25c45e..4c946afcb8 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -36,38 +36,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -80,96 +80,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $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 $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + 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 $4 + 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 $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -181,7 +179,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index c1d81ed05c..1dd4b8acc5 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -12,8 +12,8 @@ (export "_start" (func $~start)) (func $wasi/seed/test (result f64) (local $0 i64) - (local $1 i64) - (local $2 i32) + (local $1 i32) + (local $2 i64) global.get $~lib/math/random_seeded i32.eqz if @@ -24,17 +24,17 @@ drop i32.const 1024 i64.load - local.tee $1 + local.tee $0 i64.eqz br_if $do-loop|0 end i64.const -7046029254386353131 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i64.eqz select - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i64.const 33 i64.shr_u i64.xor @@ -82,9 +82,9 @@ global.get $~lib/math/random_state0_64 local.set $0 global.get $~lib/math/random_state1_64 - local.tee $1 + local.tee $2 global.set $~lib/math/random_state0_64 - local.get $1 + local.get $2 local.get $0 i64.const 23 i64.shl @@ -96,12 +96,12 @@ i64.shr_u i64.xor i64.xor - local.get $1 + local.get $2 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $1 + local.get $2 i64.const 12 i64.shr_u i64.const 4607182418800017408 diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index ae31d07581..a28ff852c7 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -57,38 +57,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -101,96 +101,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $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 $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + 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 $4 + 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 $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -202,7 +200,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -253,13 +251,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -268,18 +266,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -328,17 +326,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -352,9 +350,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -403,17 +401,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -427,7 +425,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -482,11 +480,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -498,28 +495,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -531,19 +525,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -568,9 +562,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -578,17 +572,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -716,7 +710,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -727,7 +721,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -747,44 +741,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -794,7 +787,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -804,20 +797,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -845,7 +838,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -872,15 +865,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -892,15 +882,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -921,6 +911,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -930,7 +923,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -967,8 +960,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1043,56 +1036,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) 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 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 local.get $1 i32.clz i32.sub - local.tee $2 - i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 1 i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 i32.const 7 i32.sub local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1175,76 +1165,75 @@ (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i64) (local $13 i64) local.get $2 local.get $1 i64.sub - local.set $10 + local.set $12 local.get $2 i64.const 1 i32.const 0 local.get $3 i32.sub - local.tee $11 + local.tee $10 i64.extend_i32_s local.tee $1 i64.shl - local.tee $12 + local.tee $13 i64.const 1 i64.sub - local.tee $13 + local.tee $11 i64.and local.set $7 local.get $2 local.get $1 i64.shr_u i32.wrap_i64 + local.tee $3 local.tee $6 - local.set $3 - local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $6 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $6 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $6 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $6 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $6 i32.const 100000000 i32.ge_u i32.add @@ -1273,107 +1262,107 @@ 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 $6 + local.get $3 i32.const 1000000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 - local.set $3 - i32.const 0 + local.get $3 local.set $6 + i32.const 0 + local.set $3 br $break|1 end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 local.get $5 + local.get $6 i32.or if local.get $5 @@ -1386,7 +1375,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -1397,16 +1386,16 @@ i32.const 1 i32.sub local.set $9 + local.get $4 local.get $7 - local.get $6 + local.get $3 i64.extend_i32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $4 - i64.le_u + i64.ge_u if local.get $9 global.get $~lib/util/number/_K @@ -1418,7 +1407,7 @@ i32.const 2200 i32.add i64.load32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl local.set $2 @@ -1429,44 +1418,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $6 loop $while-continue|3 + local.get $1 + local.get $12 + i64.lt_u local.get $2 local.get $4 local.get $1 i64.sub i64.le_u - i32.const 0 - local.get $1 - local.get $10 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 - local.get $10 + local.get $12 local.get $1 i64.sub local.get $1 local.get $2 i64.add local.tee $7 - local.get $10 + local.get $12 i64.sub i64.gt_u local.get $7 - local.get $10 + local.get $12 i64.lt_u - select + i32.or else i32.const 0 end if - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 local.get $1 local.get $2 i64.add @@ -1474,8 +1461,8 @@ br $while-continue|3 end end + local.get $0 local.get $6 - local.get $3 i32.store16 local.get $5 return @@ -1483,7 +1470,7 @@ br $while-continue|0 end end - loop $while-continue|4 + loop $while-continue|4 (result i32) local.get $4 i64.const 10 i64.mul @@ -1492,7 +1479,7 @@ i64.const 10 i64.mul local.tee $1 - local.get $11 + local.get $10 i64.extend_i32_s i64.shr_u local.tee $2 @@ -1524,87 +1511,85 @@ i32.const 1 i32.sub local.set $9 - local.get $4 local.get $1 - local.get $13 + local.get $11 i64.and local.tee $7 - i64.le_u - br_if $while-continue|4 - end - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 2200 - i32.add - i64.load32_u - local.get $10 - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $6 - i32.load16_u - local.set $3 - loop $while-continue|6 - local.get $12 local.get $4 - local.get $1 - i64.sub - i64.le_u + i64.ge_u + br_if $while-continue|4 + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 i32.const 0 - local.get $1 - local.get $2 - i64.lt_u - select - if (result i32) - i32.const 1 - local.get $2 - local.get $1 - i64.sub + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 2200 + i32.add + i64.load32_u + local.get $12 + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $6 + loop $while-continue|6 local.get $1 - local.get $12 - i64.add - local.tee $7 local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $7 - i64.gt_u - select - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.sub - local.set $3 + i64.lt_u + local.get $13 + local.get $4 local.get $1 - local.get $12 - i64.add - local.set $1 - br $while-continue|6 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $2 + local.get $1 + i64.sub + local.get $1 + local.get $13 + i64.add + local.tee $7 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $7 + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $6 + i32.store16 + local.get $5 end - local.get $6 - local.get $3 - i32.store16 - local.get $5 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1619,17 +1604,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1775,19 +1760,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1802,7 +1787,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1813,10 +1798,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1824,10 +1809,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1838,7 +1823,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1868,17 +1853,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -1893,7 +1878,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -1904,10 +1889,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1915,10 +1900,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -1929,7 +1914,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1955,17 +1940,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1980,7 +1965,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -1991,10 +1976,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2002,10 +1987,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2016,7 +2001,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2053,131 +2038,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2194,59 +2157,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2263,7 +2220,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2274,11 +2231,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2292,17 +2249,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2613,9 +2570,6 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -2634,18 +2588,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -2662,27 +2615,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -2704,19 +2656,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -2733,7 +2684,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -2751,7 +2702,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -2762,24 +2713,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -2825,20 +2775,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -2861,20 +2808,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -2882,63 +2828,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -2957,18 +2900,20 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (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 $8 + local.tee $3 if (result f64) local.get $0 i32.const 45 @@ -2985,40 +2930,38 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.set $3 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $3 + local.get $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl i64.add - local.set $2 - local.get $3 - i32.const 1 - local.get $3 - select - i32.const 1075 - i32.sub - local.tee $3 - i32.const 1 - i32.sub - local.get $2 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $4 i64.clz i32.wrap_i64 - local.tee $7 + local.tee $8 i32.sub - local.set $9 - local.get $5 - local.get $7 + local.set $10 + local.get $4 + local.get $8 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -3028,25 +2971,25 @@ i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $8 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $3 - local.get $7 - i32.sub local.get $9 + local.get $8 + i32.sub + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $9 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -3055,9 +2998,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $3 + local.tee $9 local.get $1 - local.get $3 + local.get $9 f64.convert_i32_s f64.ne i32.add @@ -3065,18 +3008,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $3 + local.tee $9 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $7 + local.get $10 i32.const 1328 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $3 + local.get $9 i32.const 1 i32.shl i32.const 2024 @@ -3094,55 +3037,78 @@ local.get $2 i64.const 32 i64.shr_u - local.tee $14 - global.get $~lib/util/number/_frc_pow local.tee $5 + global.get $~lib/util/number/_frc_pow + local.tee $7 i64.const 4294967295 i64.and + local.tee $12 local.tee $2 - local.tee $4 i64.mul - local.get $4 + local.get $2 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $5 local.set $13 global.get $~lib/util/number/_frc_plus local.tee $4 i64.const 4294967295 i64.and - local.set $6 + local.set $2 local.get $4 i64.const 32 i64.shr_u - local.tee $10 - local.get $2 + local.tee $6 + local.get $12 i64.mul local.get $2 - local.get $6 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add + local.set $14 + global.get $~lib/util/number/_frc_minus + local.tee $15 + i64.const 4294967295 + i64.and local.set $4 - local.get $5 - local.get $10 + local.get $15 + i64.const 32 + i64.shr_u + local.tee $15 + local.get $12 i64.mul local.get $4 + local.get $12 + i64.mul i64.const 32 i64.shr_u i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 local.get $5 - local.get $6 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $16 + local.tee $7 i64.mul - local.get $4 + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $11 + i64.mul + local.get $13 i64.const 4294967295 i64.and i64.add @@ -3151,44 +3117,17 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $4 - global.get $~lib/util/number/_frc_minus - local.tee $6 - i64.const 4294967295 - i64.and - local.set $10 local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $2 + local.get $16 i64.mul - local.get $2 - local.get $10 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $2 - local.get $8 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 local.get $14 - i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add - local.get $11 - local.get $13 + local.get $2 + local.get $16 i64.mul - local.get $12 + local.get $14 i64.const 4294967295 i64.and i64.add @@ -3197,24 +3136,26 @@ i64.const 32 i64.shr_u i64.add - local.get $4 + i64.const 1 + i64.sub + local.tee $2 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $8 i32.add i32.const -64 i32.sub - local.get $4 - local.get $5 - local.get $6 - i64.mul local.get $2 + local.get $15 + local.get $16 + i64.mul + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $5 - local.get $10 + local.get $4 + local.get $16 i64.mul - local.get $2 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -3226,13 +3167,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $3 call $~lib/util/number/genDigits - local.get $8 + local.get $3 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $3 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -3341,18 +3282,17 @@ i32.const 2 i32.add else + local.get $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $8 local.get $6 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $9 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $6 i32.load16_u offset=2 @@ -3385,6 +3325,13 @@ br $while-continue|0 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $8 local.get $7 i32.const 56 local.get $7 @@ -3393,15 +3340,7 @@ select i32.const 13 i32.add - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $9 - local.get $7 + local.tee $6 i32.const 1073741820 i32.gt_u if @@ -3412,54 +3351,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $7 + i32.const 12 + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $6 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $7 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $7 + select + local.tee $9 call $~lib/rt/tlsf/searchBlock local.tee $6 i32.eqz if memory.size - local.tee $8 - local.get $7 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $7 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $7 - i32.add - else - local.get $7 - end + local.tee $6 i32.const 4 - local.get $9 - i32.load offset=1568 local.get $8 + i32.load offset=1568 + local.get $6 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $9 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $9 + i32.add + local.get $9 + local.get $9 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -3467,16 +3402,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $6 + local.tee $7 local.get $6 - local.get $8 - i32.lt_s + local.get $7 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $6 + local.get $7 memory.grow i32.const 0 i32.lt_s @@ -3484,16 +3419,16 @@ unreachable end end - local.get $9 local.get $8 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $8 local.get $9 - local.get $7 call $~lib/rt/tlsf/searchBlock local.tee $6 i32.eqz @@ -3510,7 +3445,7 @@ i32.load i32.const -4 i32.and - local.get $7 + local.get $9 i32.lt_u if i32.const 0 @@ -3520,16 +3455,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $9 + local.get $8 local.get $6 call $~lib/rt/tlsf/removeBlock - local.get $7 - local.set $8 local.get $6 - local.tee $7 i32.load - local.set $6 - local.get $8 + local.set $10 + local.get $9 i32.const 4 i32.add i32.const 15 @@ -3542,81 +3474,81 @@ call $~lib/wasi/index/abort unreachable end - local.get $6 + local.get $10 i32.const -4 i32.and - local.get $8 + local.get $9 i32.sub - local.tee $10 + local.tee $7 i32.const 16 i32.ge_u if - local.get $7 local.get $6 + local.get $10 i32.const 2 i32.and - local.get $8 + local.get $9 i32.or i32.store - local.get $8 - local.get $7 + local.get $9 + local.get $6 i32.const 4 i32.add i32.add - local.tee $6 - local.get $10 + local.tee $9 + local.get $7 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $8 local.get $9 - local.get $6 call $~lib/rt/tlsf/insertBlock else - local.get $7 local.get $6 + local.get $10 i32.const -2 i32.and i32.store - local.get $7 + local.get $6 i32.const 4 i32.add - local.get $7 + local.get $6 i32.load i32.const -4 i32.and i32.add - local.tee $6 - local.get $6 + local.tee $7 + local.get $7 i32.load i32.const -3 i32.and i32.store end - local.get $7 + local.get $6 i32.const 4 i32.add - local.tee $7 + local.tee $6 i32.const 8 i32.add - local.tee $8 + local.tee $7 i32.const 4 i32.add - local.set $6 - local.get $7 + local.set $8 local.get $6 + local.get $8 i32.store - local.get $6 + local.get $8 i64.const 9071406388179572 i64.store - local.get $7 + local.get $6 i32.const 7 i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop i32.const 1052 @@ -3626,164 +3558,164 @@ local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 + local.get $6 i32.const 1056 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 if (result i32) - local.get $6 + local.get $8 i32.const 32 i32.store8 - local.get $6 + local.get $8 i32.const 1 i32.add - local.tee $6 + local.tee $8 local.get $1 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 1 i32.gt_s if - local.get $6 + local.get $8 local.get $2 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 2 i32.gt_s if - local.get $6 + local.get $8 local.get $3 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 3 i32.gt_s if - local.get $6 + local.get $8 local.get $4 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 4 i32.gt_s if - local.get $6 + local.get $8 local.get $5 call $~lib/util/number/dtoa_buffered local.set $0 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $0 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop end end end end - local.get $6 + local.get $8 i32.const 1 i32.sub else - local.get $6 + local.get $8 end i32.const 10 i32.store8 - local.get $7 + local.get $6 i32.const 1 i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop - local.get $7 + local.get $6 i32.const 19024 i32.ge_u if @@ -3793,20 +3725,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $7 + local.get $6 i32.const 4 i32.sub - local.set $0 - local.get $7 + local.set $7 + local.get $6 i32.const 15 i32.and i32.const 1 - local.get $7 + local.get $6 select if (result i32) i32.const 1 else - local.get $0 + local.get $7 i32.load i32.const 1 i32.and @@ -3819,13 +3751,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 - local.get $0 + local.get $7 + local.get $7 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $7 call $~lib/rt/tlsf/insertBlock end ) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index 3105313e7f..00bc803084 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ 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 $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - 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) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1154,348 +998,348 @@ (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 10 - local.set $0 - loop $while-continue|0 + block $folding-inner0 + i32.const 10 + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end local.get $0 if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - if - i32.const 0 - i32.const 1056 + local.get $2 i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 10 - local.set $0 - loop $while-continue|00 + local.set $2 + i32.const 10 + local.set $0 + loop $while-continue|00 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + loop $while-continue|1 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 30 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + br $while-continue|00 + end + end local.get $0 if + i32.const 0 + i32.const 1056 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + i32.const 1 + local.set $0 + loop $while-continue|01 local.get $0 + local.tee $1 i32.const 1 i32.sub local.set $0 local.get $1 - i32.const 1 - i32.add - local.set $1 - loop $while-continue|1 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if + if (result i32) + local.get $2 + i32.const 1 + i32.add + local.tee $2 + else i32.const 0 - i32.const 1056 - i32.const 30 - i32.const 5 - call $~lib/builtins/abort - unreachable end - br $while-continue|00 + br_if $while-continue|01 end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 1 - local.set $0 - loop $while-continue|01 local.get $0 - local.tee $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const 1 - i32.sub + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 local.set $0 - local.get $1 - if (result i32) - local.get $2 + loop $while-continue|02 + local.get $0 i32.const 1 i32.add - local.tee $2 - else - i32.const 0 + local.tee $0 + i32.const 10 + i32.ne + br_if $while-continue|02 end - br_if $while-continue|01 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $while-continue|02 local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $while-continue|02 - end - local.get $0 - i32.const 10 - i32.ne - if + if + i32.const 0 + i32.const 1056 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $while-continue|03 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.set $0 + loop $while-continue|03 (result i32) + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $while-continue|03 + local.get $0 + end i32.const 10 i32.ne - br_if $while-continue|03 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $while-continue|04 - local.get $0 if - local.get $0 + i32.const 0 + i32.const 1056 + i32.const 72 i32.const 1 - i32.sub - local.set $0 - br $while-continue|04 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $while-continue|04 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|04 + end end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - i32.const 10 - local.set $2 - loop $while-continue|05 local.get $0 if - loop $while-continue|16 - local.get $2 - if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + i32.const 10 + local.set $2 + loop $while-continue|05 + local.get $0 + if + loop $while-continue|16 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|16 + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|16 + end end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|05 end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|05 end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if + i32.const 0 + i32.const 1056 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 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 i32.const 0 - i32.const 1056 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 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 - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $while/Ref#constructor - local.tee $0 + local.tee $2 i32.store - loop $while-continue|07 - local.get $0 + loop $while-continue|06 + local.get $2 if - local.get $2 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $0 + local.set $2 else global.get $~lib/memory/__stack_pointer call $while/Ref#constructor - local.tee $0 + local.tee $2 i32.store end - br $while-continue|07 + br $while-continue|06 end end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1506,7 +1350,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 if i32.const 0 i32.const 1056 @@ -1520,7 +1364,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1530,33 +1374,33 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $while/Ref#constructor - local.tee $0 + local.tee $2 i32.store - loop $while-continue|06 + loop $while-continue|08 call $while/Ref#constructor if - block $while-break|07 - local.get $2 + block $while-break|09 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $0 - br $while-break|07 + local.set $2 + br $while-break|09 end - br $while-continue|06 + br $while-continue|08 end end end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1567,7 +1411,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 if i32.const 0 i32.const 1056 @@ -1582,25 +1426,25 @@ global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 - loop $while-continue|08 + loop $while-continue|07 local.get $0 i32.const 1 i32.add local.tee $0 - i32.const 1 - i32.lt_s - br_if $while-continue|08 + i32.const 0 + i32.le_s + br_if $while-continue|07 end i32.const 0 local.set $0 - loop $while-continue|010 + loop $while-continue|09 local.get $0 i32.const 1 i32.add local.tee $0 - i32.const 1 - i32.lt_s - br_if $while-continue|010 + i32.const 0 + i32.le_s + br_if $while-continue|09 end i32.const 0 local.set $0 @@ -1628,23 +1472,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|012 + loop $while-continue|011 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|012 + br $while-continue|011 end end end call $~lib/rt/itcms/step drop - loop $while-continue|113 + loop $while-continue|112 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|113 + br $while-continue|112 end end global.get $~lib/rt/itcms/total @@ -1687,7 +1531,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1720,7 +1564,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1774,17 +1618,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1797,16 +1641,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1814,15 +1658,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1849,22 +1693,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1873,19 +1717,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1897,8 +1741,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1911,12 +1755,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1930,7 +1774,7 @@ local.get $0 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 @@ -1942,16 +1786,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + 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 + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + 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 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + 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 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + 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 ) ) From 5757fa8782a66e62eed942f0cfc72ad219fce378 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 1 Nov 2021 12:37:08 +0200 Subject: [PATCH 04/19] change typescript deps prefix (#2111) --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6479c46374..879adff5f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "physical-cpu-count": "^2.0.0", "ts-loader": "^9.2.6", "ts-node": "^6.2.0", - "typescript": "^4.4.4", + "typescript": "~4.4.4", "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, diff --git a/package.json b/package.json index 112fbd3112..69d2ed22e8 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "physical-cpu-count": "^2.0.0", "ts-loader": "^9.2.6", "ts-node": "^6.2.0", - "typescript": "^4.4.4", + "typescript": "~4.4.4", "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, From ca18f258eab32cd70044ddb19b488c61e2e4c12d Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 1 Nov 2021 15:27:28 +0200 Subject: [PATCH 05/19] Expose try for exception handling (#2110) --- src/module.ts | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/module.ts b/src/module.ts index f4ab962eb4..62617f7afe 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1613,23 +1613,29 @@ export class Module { // exception handling - // try( - // body: ExpressionRef, - // catchTags: string[], - // catchBodies: ExpressionRef[] - // ): ExpressionRef { - // var numCatchTags = catchTags.length; - // var strs = new Array(numCatchTags); - // for (let i = 0; i < numCatchTags; ++i) { - // strs[i] = this.allocStringCached(catchTags[i]); - // } - // var cArr1 = allocPtrArray(strs); - // var cArr2 = allocPtrArray(catchBodies); - // var ret = binaryen._BinaryenTry(this.ref, body, cArr1, numCatchTags, cArr2, catchBodies.length); - // binaryen._free(cArr2); - // binaryen._free(cArr1); - // return ret; - // } + try( + name: string | null, + body: ExpressionRef, + catchTags: string[], + catchBodies: ExpressionRef[], + delegateTarget: string | null = null + ): ExpressionRef { + var numCatchTags = catchTags.length; + var strs = new Array(numCatchTags); + for (let i = 0; i < numCatchTags; ++i) { + strs[i] = this.allocStringCached(catchTags[i]); + } + var cArr1 = allocPtrArray(strs); + var cArr2 = allocPtrArray(catchBodies); + var cStr1 = this.allocStringCached(name); + var cStr2 = this.allocStringCached(delegateTarget); + var ret = binaryen._BinaryenTry( + this.ref, cStr1, body, cArr1, numCatchTags, cArr2, catchBodies.length, cStr2 + ); + binaryen._free(cArr2); + binaryen._free(cArr1); + return ret; + } throw( tagName: string, From e08a264df212928d8561e529cbdfe403df25d158 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 1 Nov 2021 15:44:28 +0200 Subject: [PATCH 06/19] Slightly optimize interop with binaryen (#2108) --- src/glue/binaryen.d.ts | 5 ++ src/module.ts | 137 ++++++++++++++++++++++++++--------------- 2 files changed, 91 insertions(+), 51 deletions(-) diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 45adb16939..a0f520d8d6 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -643,6 +643,11 @@ export declare function _BinaryenSetAllowInliningFunctionsWithLoops(enabled: boo // Helpers +// Binaryen.js only (ASC_TARGET = 0) +export declare const HEAPU8: Uint8Array; +export declare const HEAPU32: Uint32Array; +export declare const HEAP32: Int32Array; + export declare function _malloc(size: usize): usize; export declare function _free(ptr: usize): void; export declare function __i32_store8(ptr: usize, value: number): void; diff --git a/src/module.ts b/src/module.ts index 62617f7afe..791ecdb27a 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2507,7 +2507,7 @@ export class Module { // avoid quite a bit of unnecessary garbage. if (ptr == 0) return null; var cached = this.cachedPointersToStrings; - if (cached.has(ptr)) return changetype(this.cachedPointersToStrings.get(ptr)); + if (cached.has(ptr)) return changetype(cached.get(ptr)); var str = readString(ptr); cached.set(ptr, str); return str; @@ -3035,8 +3035,12 @@ function allocU8Array(u8s: Uint8Array | null): usize { if (!u8s) return 0; var len = u8s.length; var ptr = binaryen._malloc(len); - for (let i = 0; i < len; ++i) { - binaryen.__i32_store8(ptr + i, u8s[i]); + if (!ASC_TARGET) { + binaryen.HEAPU8.set(u8s, ptr); + } else { + for (let i = 0; i < len; ++i) { + binaryen.__i32_store8(ptr + i, u8s[i]); + } } return ptr; } @@ -3045,11 +3049,15 @@ function allocI32Array(i32s: i32[] | null): usize { if (!i32s) return 0; var len = i32s.length; var ptr = binaryen._malloc(len << 2); - var idx = ptr; - for (let i = 0; i < len; ++i) { - let val = i32s[i]; - binaryen.__i32_store(idx, val); - idx += 4; + if (!ASC_TARGET) { + binaryen.HEAP32.set(i32s, ptr >>> 2); + } else { + var idx = ptr; + for (let i = 0; i < len; ++i) { + let val = i32s[i]; + binaryen.__i32_store(idx, val); + idx += 4; + } } return ptr; } @@ -3058,11 +3066,15 @@ function allocU32Array(u32s: u32[] | null): usize { if (!u32s) return 0; var len = u32s.length; var ptr = binaryen._malloc(len << 2); - var idx = ptr; - for (let i = 0; i < len; ++i) { - let val = u32s[i]; - binaryen.__i32_store(idx, val); - idx += 4; + if (!ASC_TARGET) { + binaryen.HEAPU32.set(u32s, ptr >>> 2); + } else { + var idx = ptr; + for (let i = 0; i < len; ++i) { + let val = u32s[i]; + binaryen.__i32_store(idx, val); + idx += 4; + } } return ptr; } @@ -3073,11 +3085,15 @@ export function allocPtrArray(ptrs: usize[] | null): usize { assert(ASC_TARGET != Target.WASM64); var len = ptrs.length; var ptr = binaryen._malloc(len << 2); - var idx = ptr; - for (let i = 0, k = len; i < k; ++i) { - let val = ptrs[i]; - binaryen.__i32_store(idx, val); - idx += 4; + if (!ASC_TARGET) { + binaryen.HEAPU32.set(ptrs, ptr >>> 2); + } else { + var idx = ptr; + for (let i = 0, k = len; i < k; ++i) { + let val = ptrs[i]; + binaryen.__i32_store(idx, val); + idx += 4; + } } return ptr; } @@ -3085,18 +3101,16 @@ export function allocPtrArray(ptrs: usize[] | null): usize { function stringLengthUTF8(str: string): usize { var len = 0; for (let i = 0, k = str.length; i < k; ++i) { - let u = str.charCodeAt(i); - if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) { - u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); - } + let u = str.charCodeAt(i) >>> 0; if (u <= 0x7F) { len += 1; } else if (u <= 0x7FF) { len += 2; - } else if (u <= 0xFFFF) { - len += 3; - } else { + } else if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) { + u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); len += 4; + } else { + len += 3; } } return len; @@ -3104,41 +3118,62 @@ function stringLengthUTF8(str: string): usize { function allocString(str: string | null): usize { if (str === null) return 0; - var ptr = binaryen._malloc(stringLengthUTF8(str) + 1) >>> 0; - // the following is based on Emscripten's stringToUTF8Array + var len = stringLengthUTF8(str); + var ptr = binaryen._malloc(len + 1) >>> 0; var idx = ptr; - for (let i = 0, k = str.length; i < k; ++i) { - let u = str.charCodeAt(i); - if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) { - u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); - } - if (u <= 0x7F) { - binaryen.__i32_store8(idx++, u as u8); - } else if (u <= 0x7FF) { - binaryen.__i32_store8(idx++, (0xC0 | (u >>> 6) ) as u8); - binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); - } else if (u <= 0xFFFF) { - binaryen.__i32_store8(idx++, (0xE0 | (u >>> 12) ) as u8); - binaryen.__i32_store8(idx++, (0x80 | ((u >>> 6) & 63)) as u8); - binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); + if (len === str.length) { + // fast path when all chars are ascii + if (!ASC_TARGET) { + for (let i = 0, k = str.length; i < k; ++i) { + binaryen.HEAPU8[idx++] = str.charCodeAt(i); + } } else { - assert(u < 0x200000, "Invalid Unicode code point during allocString"); - binaryen.__i32_store8(idx++, (0xF0 | (u >>> 18) ) as u8); - binaryen.__i32_store8(idx++, (0x80 | ((u >>> 12) & 63)) as u8); - binaryen.__i32_store8(idx++, (0x80 | ((u >>> 6) & 63)) as u8); - binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); + for (let i = 0, k = str.length; i < k; ++i) { + let u = str.charCodeAt(i) >>> 0; + binaryen.__i32_store8(idx++, u as u8); + } + } + } else { + // the following is based on Emscripten's stringToUTF8Array + for (let i = 0, k = str.length; i < k; ++i) { + let u = str.charCodeAt(i) >>> 0; + if (u <= 0x7F) { + binaryen.__i32_store8(idx++, u as u8); + } else if (u <= 0x7FF) { + binaryen.__i32_store8(idx++, (0xC0 | (u >>> 6) ) as u8); + binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); + } else if (u >= 0xD800 && u <= 0xDFFF) { + if (i + 1 < k) { + u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + } + if (u <= 0xFFFF) { + binaryen.__i32_store8(idx++, (0xE0 | (u >>> 12) ) as u8); + binaryen.__i32_store8(idx++, (0x80 | ((u >>> 6) & 63)) as u8); + binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); + } else { + assert(u <= 0x10FFFF, "Invalid Unicode code point during allocString"); + binaryen.__i32_store8(idx++, (0xF0 | (u >>> 18) ) as u8); + binaryen.__i32_store8(idx++, (0x80 | ((u >>> 12) & 63)) as u8); + binaryen.__i32_store8(idx++, (0x80 | ((u >>> 6) & 63)) as u8); + binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); + } + } } } - binaryen.__i32_store8(idx, 0); + binaryen.__i32_store8(idx, 0); // \0 return ptr; } function readBuffer(ptr: usize, len: i32): Uint8Array { - var ret = new Uint8Array(len); - for (let i = 0; i < len; ++i) { - ret[i] = binaryen.__i32_load8_u(ptr + i); + if (!ASC_TARGET) { + return binaryen.HEAPU8.slice(ptr, ptr + len); + } else { + var ret = new Uint8Array(len); + for (let i = 0; i < len; ++i) { + ret[i] = binaryen.__i32_load8_u(ptr + i); + } + return ret; } - return ret; } export function readString(ptr: usize): string | null { From d802fa437b91e8f80e9cda9c5c66abb94f4a1acc Mon Sep 17 00:00:00 2001 From: Max Graey Date: Tue, 2 Nov 2021 14:31:31 +0200 Subject: [PATCH 07/19] Simplify stringLengthUTF8 more (#2113) --- src/module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/module.ts b/src/module.ts index 791ecdb27a..66a2ad14ea 100644 --- a/src/module.ts +++ b/src/module.ts @@ -3107,7 +3107,7 @@ function stringLengthUTF8(str: string): usize { } else if (u <= 0x7FF) { len += 2; } else if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) { - u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + i++; len += 4; } else { len += 3; From 9f9cde14ac1783402a331f3f24ce672c51c1e92a Mon Sep 17 00:00:00 2001 From: Max Graey Date: Wed, 3 Nov 2021 14:02:14 +0200 Subject: [PATCH 08/19] move Token.ASTERISK_ASTERISK to general group in resolveBinaryExpression (#2114) --- src/resolver.ts | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/resolver.ts b/src/resolver.ts index fa83a4a0d3..dd79ab78f3 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -1957,30 +1957,7 @@ export class Resolver extends DiagnosticEmitter { case Token.MINUS: case Token.ASTERISK: case Token.SLASH: - case Token.PERCENT: { // mod has special logic, but also behaves like this - let leftType = this.resolveExpression(left, ctxFlow, ctxType, reportMode); - if (!leftType) return null; - let classReference = leftType.getClassOrWrapper(this.program); - if (classReference) { - let overload = classReference.lookupOverload(OperatorKind.fromBinaryToken(operator)); - if (overload) return overload.signature.returnType; - } - let rightType = this.resolveExpression(right, ctxFlow, leftType, reportMode); - if (!rightType) return null; - let commonType = Type.commonDenominator(leftType, rightType, false); - if (!commonType) { - if (reportMode == ReportMode.REPORT) { - this.error( - DiagnosticCode.Operator_0_cannot_be_applied_to_types_1_and_2, - node.range, leftType.toString(), rightType.toString() - ); - } - } - return commonType; - } - - // pow: result is common type of LHS and RHS, preferring overloads - + case Token.PERCENT: // mod has special logic, but also behaves like this case Token.ASTERISK_ASTERISK: { let leftType = this.resolveExpression(left, ctxFlow, ctxType, reportMode); if (!leftType) return null; From 1510bac5d8c69bb266eb5c52248799e989497060 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Fri, 5 Nov 2021 01:58:15 +0200 Subject: [PATCH 09/19] [pipeline] Add early inline pass (#2117) --- src/module.ts | 1 + tests/compiler/NonNullable.optimized.wat | 98 +- tests/compiler/assert-nonnull.optimized.wat | 278 +- tests/compiler/builtins.optimized.wat | 90 +- tests/compiler/call-super.optimized.wat | 1563 +- tests/compiler/class-implements.optimized.wat | 466 +- .../class-overloading-cast.optimized.wat | 619 +- .../compiler/class-overloading.optimized.wat | 2814 +- tests/compiler/class.optimized.wat | 804 +- tests/compiler/constructor.optimized.wat | 521 +- tests/compiler/do.optimized.wat | 1006 +- .../empty-exportruntime.optimized.wat | 437 +- tests/compiler/empty-new.optimized.wat | 440 +- tests/compiler/exports.optimized.wat | 485 +- .../exportstar-rereexport.optimized.wat | 713 +- .../extends-baseaggregate.optimized.wat | 1068 +- .../compiler/extends-recursive.optimized.wat | 443 +- tests/compiler/features/simd.optimized.wat | 18 +- .../field-initialization.optimized.wat | 775 +- tests/compiler/field.optimized.wat | 1060 +- tests/compiler/for.optimized.wat | 981 +- tests/compiler/function-call.optimized.wat | 935 +- .../function-expression.optimized.wat | 1196 +- .../compiler/function-inline-regressions.json | 4 + .../function-inline-regressions.optimized.wat | 42 + tests/compiler/function-inline-regressions.ts | 35 + .../function-inline-regressions.untouched.wat | 81 + tests/compiler/function-types.optimized.wat | 11 +- tests/compiler/getter-call.optimized.wat | 464 +- tests/compiler/heap.optimized.wat | 167 +- .../implicit-getter-setter.optimized.wat | 449 +- tests/compiler/infer-array.optimized.wat | 713 +- tests/compiler/infer-generic.optimized.wat | 540 +- tests/compiler/inlining.optimized.wat | 457 +- tests/compiler/instanceof-class.optimized.wat | 532 +- tests/compiler/issues/1095.optimized.wat | 788 +- tests/compiler/issues/1225.optimized.wat | 755 +- tests/compiler/issues/1699.optimized.wat | 1500 +- tests/compiler/logical.optimized.wat | 464 +- tests/compiler/managed-cast.optimized.wat | 535 +- tests/compiler/new.optimized.wat | 456 +- tests/compiler/number.optimized.wat | 891 +- tests/compiler/object-literal.optimized.wat | 1530 +- .../optional-typeparameters.optimized.wat | 470 +- tests/compiler/possibly-null.optimized.wat | 43 +- tests/compiler/reexport.optimized.wat | 477 +- tests/compiler/rereexport.optimized.wat | 485 +- tests/compiler/resolve-access.optimized.wat | 1081 +- tests/compiler/resolve-binary.optimized.wat | 846 +- .../resolve-elementaccess.optimized.wat | 836 +- .../resolve-function-expression.optimized.wat | 914 +- tests/compiler/resolve-nested.optimized.wat | 472 +- tests/compiler/resolve-new.optimized.wat | 464 +- .../resolve-propertyaccess.optimized.wat | 658 +- tests/compiler/resolve-ternary.optimized.wat | 1298 +- tests/compiler/resolve-unary.optimized.wat | 668 +- tests/compiler/return.optimized.wat | 4 - tests/compiler/rt/finalize.optimized.wat | 478 +- tests/compiler/rt/instanceof.optimized.wat | 540 +- .../runtime-incremental-export.optimized.wat | 437 +- .../rt/runtime-minimal-export.optimized.wat | 63 +- .../rt/runtime-stub-export.optimized.wat | 10 +- tests/compiler/std-wasi/console.optimized.wat | 769 +- tests/compiler/std-wasi/crypto.optimized.wat | 1026 +- tests/compiler/std-wasi/process.optimized.wat | 2088 +- tests/compiler/std/array-access.optimized.wat | 166 +- .../compiler/std/array-literal.optimized.wat | 437 +- tests/compiler/std/array.optimized.wat | 10843 +++--- tests/compiler/std/arraybuffer.optimized.wat | 531 +- tests/compiler/std/dataview.optimized.wat | 648 +- tests/compiler/std/date.optimized.wat | 1569 +- tests/compiler/std/map.optimized.wat | 20337 ++++++------ tests/compiler/std/math.optimized.wat | 666 +- tests/compiler/std/new.optimized.wat | 472 +- tests/compiler/std/object.optimized.wat | 90 +- .../std/operator-overloading.optimized.wat | 473 +- tests/compiler/std/set.optimized.wat | 7827 ++--- tests/compiler/std/static-array.optimized.wat | 556 +- tests/compiler/std/staticarray.optimized.wat | 2710 +- .../std/string-casemapping.optimized.wat | 843 +- .../std/string-encoding.optimized.wat | 2734 +- tests/compiler/std/string.optimized.wat | 1742 +- tests/compiler/std/symbol.optimized.wat | 831 +- tests/compiler/std/typedarray.optimized.wat | 27293 ++++++++-------- tests/compiler/std/uri.optimized.wat | 715 +- tests/compiler/super-inline.optimized.wat | 467 +- tests/compiler/templateliteral.optimized.wat | 874 +- tests/compiler/throw.optimized.wat | 318 +- tests/compiler/typeof.optimized.wat | 557 +- tests/compiler/wasi/abort.optimized.wat | 6 +- tests/compiler/wasi/seed.optimized.wat | 2 +- tests/compiler/wasi/trace.optimized.wat | 108 +- tests/compiler/while.optimized.wat | 1089 +- 93 files changed, 63211 insertions(+), 63045 deletions(-) create mode 100644 tests/compiler/function-inline-regressions.json create mode 100644 tests/compiler/function-inline-regressions.optimized.wat create mode 100644 tests/compiler/function-inline-regressions.ts create mode 100644 tests/compiler/function-inline-regressions.untouched.wat diff --git a/src/module.ts b/src/module.ts index 66a2ad14ea..17e5597fe8 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2298,6 +2298,7 @@ export class Module { // --- PassRunner::addDefaultFunctionOptimizationPasses --- if (optimizeLevel >= 2) { passes.push("once-reduction"); + passes.push("inlining"); } if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("rse"); diff --git a/tests/compiler/NonNullable.optimized.wat b/tests/compiler/NonNullable.optimized.wat index ef40f5ead3..2ca9308c4d 100644 --- a/tests/compiler/NonNullable.optimized.wat +++ b/tests/compiler/NonNullable.optimized.wat @@ -23,6 +23,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -57,47 +58,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -108,17 +109,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -131,16 +131,18 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~start (local $0 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1324 diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 2a632a59f7..a40dd66179 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -146,11 +146,11 @@ ) (func $export:assert-nonnull/testProp (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -206,11 +206,11 @@ ) (func $export:assert-nonnull/testArr (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -306,11 +306,11 @@ ) (func $export:assert-nonnull/testElem (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -366,20 +366,20 @@ ) (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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - block $__inlined_func$assert-nonnull/testAll (result i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store local.get $1 i32.const 8 i32.sub @@ -387,77 +387,74 @@ global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 i64.store - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $1 - local.get $0 - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - br $__inlined_func$assert-nonnull/testAll - end - i32.const 1056 - i32.const 1120 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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 - return + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 17808 - i32.const 17856 - i32.const 1 - i32.const 1 + i32.const 1056 + i32.const 1120 + 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 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - block $__inlined_func$assert-nonnull/testAll2 (result i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store local.get $1 i32.const 8 i32.sub @@ -465,58 +462,55 @@ global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 i64.store - block $folding-inner0 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - local.get $1 - local.get $0 - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - br $__inlined_func$assert-nonnull/testAll2 - end - i32.const 1056 - i32.const 1120 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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 - return + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 17808 - i32.const 17856 - i32.const 1 - i32.const 1 + i32.const 1056 + i32.const 1120 + i32.const 31 + i32.const 10 call $~lib/builtins/abort unreachable ) @@ -549,11 +543,11 @@ ) (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -609,11 +603,11 @@ ) (func $export:assert-nonnull/testRet (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s @@ -698,11 +692,11 @@ ) (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1404 i32.lt_s diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 870dd0f462..51a190f843 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -79,6 +79,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -113,47 +114,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -164,17 +165,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -187,7 +187,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $start:builtins~anonymous|1 diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index f57498eeea..f6c479de9e 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -674,38 +674,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17980 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -721,221 +794,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17980 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17980 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17980 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17980 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1440 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1131,11 +1129,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1146,15 +1144,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1332,8 +1331,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1599,607 +1598,615 @@ (local $0 i32) (local $1 i32) (local $2 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17980 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 + block $folding-inner1 + memory.size + i32.const 16 + i32.shl + i32.const 17980 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 i32.store - local.get $0 - i32.const 8 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 + i32.const 1224 + i32.const 1216 i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + 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 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $__inlined_func$call-super/test1 global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 22 + i32.store + local.get $0 + i32.const 8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$call-super/test1 end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $__inlined_func$call-super/test2 + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer local.tee $0 + i32.const 0 i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 38 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 + local.get $0 + i32.const 8 i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 38 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$call-super/test2 end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - 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 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - i32.const 1056 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1056 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 10 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 11 call $~lib/rt/itcms/__new local.tee $0 i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1056 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - 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 1596 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18000 i32.const 18048 @@ -2216,19 +2223,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -2238,22 +2245,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17980 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -2267,7 +2274,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -2279,7 +2286,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -2287,15 +2294,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -2303,7 +2310,7 @@ else i32.const 1488 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1296 @@ -2313,7 +2320,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -2331,25 +2338,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index 9fda589c77..f4feb9b159 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -696,38 +696,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17948 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -743,221 +816,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17948 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17948 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17948 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17948 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1055,13 +1053,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1152,17 +1150,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1171,19 +1169,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1213,8 +1211,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1386,11 +1384,11 @@ ) (func $class-implements/C#constructor (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1564 i32.lt_s @@ -1409,7 +1407,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1433,6 +1430,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1563,19 +1561,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1585,22 +1583,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17948 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1614,7 +1612,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1626,7 +1624,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1634,15 +1632,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1650,7 +1648,7 @@ else i32.const 1504 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1660,7 +1658,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1508 @@ -1678,25 +1676,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/class-overloading-cast.optimized.wat b/tests/compiler/class-overloading-cast.optimized.wat index 7c0f2cfb87..3ad36c7a3a 100644 --- a/tests/compiler/class-overloading-cast.optimized.wat +++ b/tests/compiler/class-overloading-cast.optimized.wat @@ -710,38 +710,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18084 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -757,221 +830,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18084 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18084 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18084 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18084 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1069,13 +1067,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1166,17 +1164,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1185,19 +1183,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1227,8 +1225,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1262,6 +1260,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1296,47 +1295,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1347,17 +1346,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1370,7 +1368,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1432,12 +1432,11 @@ (func $start:class-overloading-cast (local $0 i32) (local $1 i32) - (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - 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 1700 i32.lt_s @@ -1588,12 +1587,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=8 - global.get $~lib/memory/__stack_pointer - local.tee $1 block $__inlined_func$class-overloading-cast/A#foo@virtual (result i32) + global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/v + local.tee $0 + i32.store offset=8 block $default block $case1 local.get $0 @@ -1620,7 +1618,7 @@ end local.tee $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1488 i32.store offset=4 local.get $0 @@ -1657,26 +1655,28 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading-cast/v3 - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 8 - i32.sub - i32.load - i32.const 6 - i32.eq - if (result i32) + block $__inlined_func$class-overloading-cast/A#foo@virtual (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading-cast/v3 + local.tee $1 + i32.store offset=8 i32.const 1488 - else + local.get $1 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.eq + br_if $__inlined_func$class-overloading-cast/A#foo@virtual + drop i32.const 1456 end - local.tee $1 - i32.store + local.set $1 local.get $0 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1488 i32.store offset=4 local.get $1 @@ -1742,23 +1742,21 @@ local.get $0 global.set $class-overloading-cast/c global.get $~lib/memory/__stack_pointer - local.tee $0 - local.tee $1 global.get $class-overloading-cast/c - local.tee $2 + local.tee $0 i32.store offset=8 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1600 i32.store offset=12 - local.get $2 + local.get $0 i32.const 8 i32.sub i32.load drop - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1456 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1456 i32.store offset=4 i32.const 1456 @@ -1775,14 +1773,13 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $class-overloading-cast/c - local.tee $2 + local.tee $1 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1600 i32.store offset=12 - local.get $2 + local.get $1 i32.const 8 i32.sub i32.load @@ -1860,19 +1857,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1882,22 +1879,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 18084 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1911,7 +1908,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1923,7 +1920,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1931,15 +1928,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1947,7 +1944,7 @@ else i32.const 1616 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1957,7 +1954,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1620 @@ -1975,25 +1972,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 85fa21eab4..f715c318b9 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -734,38 +734,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18316 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -781,221 +854,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18316 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18316 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18316 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18316 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1093,13 +1091,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1190,17 +1188,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1209,19 +1207,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1251,8 +1249,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1286,6 +1284,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1320,47 +1319,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1371,17 +1370,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1394,7 +1392,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $class-overloading/A#a@virtual (param $0 i32) @@ -1552,1286 +1552,1288 @@ (func $start:class-overloading (local $0 i32) (local $1 i32) - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 18316 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $class-overloading/B#constructor - global.set $class-overloading/a - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 38 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 18316 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case0 $case1 $case0 $case0 $case2 $default + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $class-overloading/B#constructor + global.set $class-overloading/a + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case0 $case1 $case0 $case0 $case2 $default + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual end - i32.const 1488 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 41 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#get:c@virtual - block $default6 - block $case27 - block $case18 - block $case09 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case09 $case18 $case09 $case09 $case27 $default6 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual + block $default6 + block $case27 + block $case18 + block $case09 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case09 $case18 $case09 $case09 $case27 $default6 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual end - i32.const 1488 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual10 - block $default11 - block $case212 - block $case113 - block $case014 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case014 $case113 $case014 $case014 $case212 $default11 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual10 + block $default11 + block $case212 + block $case113 + block $case014 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case014 $case113 $case014 $case014 $case212 $default11 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual10 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual10 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual10 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual10 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-overloading/B#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/c - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/c - i32.store - call $class-overloading/C#a - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.store offset=4 - local.get $0 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/c - i32.store - i32.const 1616 - global.set $class-overloading/which - local.get $0 - i32.const 1616 - i32.store - local.get $0 - i32.const 1616 - i32.store offset=4 - i32.const 1616 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/c - i32.store - i32.const 1616 - global.set $class-overloading/which - local.get $0 - i32.const 1616 - i32.store - local.get $0 - i32.const 1616 - i32.store offset=4 - i32.const 1616 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/c - i32.store - i32.const 1616 - global.set $class-overloading/which - local.get $0 - i32.const 1616 - i32.store - local.get $0 - i32.const 1616 - i32.store offset=4 - i32.const 1616 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/D#constructor - global.set $class-overloading/a - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + local.get $0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/B#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/c + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + call $class-overloading/C#a + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store offset=4 + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + local.get $0 + i32.const 1616 + i32.store + local.get $0 + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + local.get $0 + i32.const 1616 + i32.store + local.get $0 + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/c + i32.store + i32.const 1616 + global.set $class-overloading/which + local.get $0 + i32.const 1616 + i32.store + local.get $0 + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual22 - block $default23 - block $case224 - block $case125 - block $case026 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case026 $case125 $case026 $case026 $case224 $default23 + call $class-overloading/D#constructor + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual22 + block $default23 + block $case224 + block $case125 + block $case026 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case026 $case125 $case026 $case026 $case224 $default23 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual22 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual22 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual22 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual22 end - i32.const 1488 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#get:c@virtual31 - block $default32 - block $case233 - block $case134 - block $case035 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case035 $case134 $case035 $case035 $case233 $default32 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual31 + block $default32 + block $case233 + block $case134 + block $case035 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case035 $case134 $case035 $case035 $case233 $default32 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual31 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual31 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual31 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual31 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual40 - block $default41 - block $case242 - block $case143 - block $case044 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case044 $case143 $case044 $case044 $case242 $default41 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual40 + block $default41 + block $case242 + block $case143 + block $case044 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case044 $case143 $case044 $case044 $case242 $default41 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual40 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual40 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual40 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual40 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $class-overloading/E#constructor - global.set $class-overloading/a - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store offset=4 - local.get $0 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1552 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual49 - block $default50 - block $case251 - block $case152 - block $case053 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case053 $case152 $case053 $case053 $case251 $default50 + call $class-overloading/E#constructor + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual49 + block $default50 + block $case251 + block $case152 + block $case053 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case053 $case152 $case053 $case053 $case251 $default50 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual49 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual49 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual49 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual49 end - i32.const 1488 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#get:c@virtual58 - block $default59 - block $case260 - block $case161 - block $case062 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case062 $case161 $case062 $case062 $case260 $default59 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual58 + block $default59 + block $case260 + block $case161 + block $case062 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case062 $case161 $case062 $case062 $case260 $default59 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual58 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual58 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual58 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual58 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual67 - block $default68 - block $case269 - block $case170 - block $case071 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case071 $case170 $case071 $case071 $case269 $default68 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual67 + block $default68 + block $case269 + block $case170 + block $case071 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case071 $case170 $case071 $case071 $case269 $default68 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual67 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual67 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual67 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual67 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1520 - i32.store offset=4 - local.get $1 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1520 + i32.store offset=4 + local.get $1 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-overloading/E#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/a - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - local.get $0 - call $class-overloading/A#a@virtual - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/which - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=4 - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 137 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual77 - block $default78 - block $case279 - block $case180 - block $case081 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case081 $case180 $case081 $case081 $case279 $default78 + i32.store + local.get $0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/E#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/a + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/which + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual77 + block $default78 + block $case279 + block $case180 + block $case081 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case081 $case180 $case081 $case081 $case279 $default78 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual77 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual77 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual77 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual77 end - i32.const 1488 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1648 - i32.store offset=4 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 140 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#get:c@virtual86 - block $default87 - block $case288 - block $case189 - block $case090 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case090 $case189 $case090 $case090 $case288 $default87 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#get:c@virtual86 + block $default87 + block $case288 + block $case189 + block $case090 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case090 $case189 $case090 $case090 $case288 $default87 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#get:c@virtual86 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual86 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#get:c@virtual86 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual86 end - i32.const 1488 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1648 - i32.store offset=4 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/a - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A#b@virtual95 - block $default96 - block $case297 - block $case198 - block $case099 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.sub - br_table $case099 $case198 $case099 $case099 $case297 $default96 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/a + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A#b@virtual95 + block $default96 + block $case297 + block $case198 + block $case099 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.sub + br_table $case099 $case198 $case099 $case099 $case297 $default96 + end + i32.const 1520 + global.set $class-overloading/which + br $__inlined_func$class-overloading/A#b@virtual95 end - i32.const 1520 + i32.const 1616 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual95 end - i32.const 1616 + i32.const 1648 global.set $class-overloading/which br $__inlined_func$class-overloading/A#b@virtual95 end - i32.const 1648 + i32.const 1488 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual95 end - i32.const 1488 - global.set $class-overloading/which - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1648 - i32.store offset=4 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1648 + i32.store offset=4 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/ia - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/ia - local.tee $0 - i32.store - block $__inlined_func$class-overloading/IA#foo@virtual - block $default105 - block $case1106 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 10 - i32.ne - if + i32.store + local.get $0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/ia + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/ia + local.tee $0 + i32.store + block $__inlined_func$class-overloading/IA#foo@virtual + block $default105 + block $case1106 local.get $0 - i32.const 12 - i32.eq - br_if $case1106 - br $default105 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 12 + i32.eq + br_if $case1106 + br $default105 + end + i32.const 1680 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@virtual end - i32.const 1680 + i32.const 1712 global.set $class-overloading/which br $__inlined_func$class-overloading/IA#foo@virtual end - i32.const 1712 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual + unreachable end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1680 - i32.store offset=4 - local.get $1 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 162 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/ic - i32.const 1056 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/ic - local.tee $0 - i32.store - block $__inlined_func$class-overloading/IA#foo@virtual109 - block $default110 - block $case1111 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 12 - i32.eq - br_if $case1111 - br $default110 - end - i32.const 1680 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual109 - end - i32.const 1712 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual109 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $class-overloading/which + local.tee $1 + i32.store + local.get $0 + i32.const 1680 + i32.store offset=4 + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $class-overloading/which - local.tee $1 - i32.store - local.get $0 - i32.const 1712 - i32.store offset=4 - local.get $1 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1552 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + i32.store + local.get $0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/ic + i32.const 1056 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/ic + local.tee $0 + i32.store + block $__inlined_func$class-overloading/IA#foo@virtual109 + block $default110 + block $case1111 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 12 + i32.eq + br_if $case1111 + br $default110 + end + i32.const 1680 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@virtual109 + end + i32.const 1712 + global.set $class-overloading/which + br $__inlined_func$class-overloading/IA#foo@virtual109 + end + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 13 - call $~lib/rt/itcms/__new local.tee $0 + global.get $class-overloading/which + local.tee $1 i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $class-overloading/b2 - global.get $~lib/memory/__stack_pointer - global.get $class-overloading/b2 - local.tee $0 - i32.store - block $__inlined_func$class-overloading/A2#foo@virtual (result i32) local.get $0 - i32.const 8 + i32.const 1712 + i32.store offset=4 + local.get $1 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.load + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 14 - i32.eq + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 15 + i32.const 13 call $~lib/rt/itcms/__new local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1932 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/b2 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/b2 + local.tee $0 + i32.store + block $__inlined_func$class-overloading/A2#foo@virtual (result i32) local.get $0 - i32.eqz + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq if 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 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 15 call $~lib/rt/itcms/__new local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 15 + i32.ne + if + i32.const 1744 + i32.const 1552 + i32.const 186 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + br $__inlined_func$class-overloading/A2#foo@virtual end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 15 - i32.ne - if - i32.const 1744 - i32.const 1552 - i32.const 186 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 - br $__inlined_func$class-overloading/A2#foo@virtual + i32.const 1744 + i32.const 1552 + i32.const 198 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.const 1744 - i32.const 1552 - i32.const 198 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 209 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 3 + i32.ne + 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 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 - return end i32.const 18336 i32.const 18384 @@ -2842,11 +2844,11 @@ ) (func $class-overloading/B#constructor (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1932 i32.lt_s @@ -2865,7 +2867,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2889,6 +2890,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -2991,19 +2993,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -3013,22 +3015,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 18316 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -3042,7 +3044,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -3054,7 +3056,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -3062,15 +3064,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -3078,7 +3080,7 @@ else i32.const 1792 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1280 @@ -3088,7 +3090,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1796 @@ -3106,25 +3108,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 36d5739d46..0439ea3151 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -192,19 +192,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -816,38 +814,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17972 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -863,221 +934,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17972 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17972 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17972 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17972 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1449,11 +1445,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1464,19 +1460,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1484,7 +1481,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1495,17 +1492,17 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 - i32.const 536870910 + local.get $5 + local.get $5 + i32.const 536870910 i32.lt_u select i32.add @@ -1515,16 +1512,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1532,7 +1529,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1540,8 +1537,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1558,7 +1555,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1568,13 +1565,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1587,40 +1584,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1650,8 +1647,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1689,208 +1686,134 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 0 - 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 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 32 - call $~lib/memory/memory.fill - local.get $1 - local.get $2 - i32.store + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $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 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/memory/memory.fill + local.get $2 + local.get $0 + i32.store + local.get $0 + if local.get $2 - if - local.get $1 - i32.eqz - br_if $folding-inner1 - global.get $~lib/rt/itcms/white - local.get $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - 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 $4 - 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 $4 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.const 32 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.store + local.get $2 + if local.get $1 local.get $2 - i32.store offset=4 - local.get $1 - i32.const 32 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $1 - i32.store - local.get $1 - if - local.get $3 - i32.eqz - br_if $folding-inner1 - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $0 - 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 $0 - 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 $0 - 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 - return + call $byn-split-outlined-A$~lib/rt/itcms/__link end - i32.const 18000 - i32.const 18048 - 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 + return end - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 + i32.const 18000 + i32.const 18048 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $class/Animal - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $folding-inner0 $invalid + block $~lib/array/Array + block $class/Animal + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $~lib/array/Array $invalid + end + return end return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -2001,4 +1924,53 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 + ) ) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index e503951a8d..b6d916a28a 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -751,38 +751,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17988 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -798,221 +871,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17988 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17988 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17988 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17988 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1208,11 +1206,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1223,15 +1221,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1409,8 +1408,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1618,43 +1617,43 @@ ) (func $start:constructor (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 17988 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - memory.size - i32.const 16 - i32.shl - i32.const 17988 - 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1604 i32.lt_s @@ -2074,19 +2073,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -2096,22 +2095,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17988 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -2125,7 +2124,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -2137,7 +2136,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -2145,15 +2144,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -2161,7 +2160,7 @@ else i32.const 1488 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -2171,7 +2170,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -2189,25 +2188,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index 3a6eb21a03..a8059a0de2 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -674,38 +674,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17892 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -721,221 +794,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17892 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17892 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17892 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17892 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -998,297 +996,291 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - i32.const 10 - local.set $0 - loop $do-loop|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-loop|0 - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + i32.const 10 + local.set $0 + loop $do-loop|0 local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $do-loop|00 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - br_if $do-loop|00 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 + i32.const 1 + i32.add local.set $1 - i32.const 10 - local.set $0 - loop $do-loop|01 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - loop $do-loop|1 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-loop|1 - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - br_if $do-loop|01 - end local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $do-loop|02 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $do-loop|02 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.sub + local.tee $0 + br_if $do-loop|0 + end + local.get $0 + if i32.const 0 - local.set $0 - loop $do-loop|03 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $do-loop|03 - end - local.get $0 + i32.const 1056 i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.ne + if i32.const 0 - local.set $0 - loop $do-loop|04 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - i32.const 0 - local.get $0 - select - br_if $do-loop|04 - end + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $do-loop|01 local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 + local.tee $1 + i32.const 1 + i32.sub local.set $0 + local.get $1 + br_if $do-loop|01 + end + local.get $0 + i32.const -1 + i32.ne + if i32.const 0 - local.set $1 - loop $do-loop|05 - local.get $0 + i32.const 1056 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $do-loop|03 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $6 + i32.const 1 + i32.add + local.set $6 + loop $do-loop|1 + local.get $10 i32.const 1 i32.add + local.set $10 + local.get $0 + i32.const 1 + i32.sub local.tee $0 - i32.const 10 - i32.ne - if - loop $do-loop|17 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 10 - i32.rem_s - i32.const 0 - local.get $1 - select - br_if $do-loop|17 - end - local.get $0 - br_if $do-loop|05 - end + br_if $do-loop|1 end local.get $0 - i32.const 10 - i32.ne if i32.const 0 i32.const 1056 - i32.const 134 - i32.const 3 + i32.const 39 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 90 + local.get $10 + i32.const 9 i32.ne if i32.const 0 i32.const 1056 - i32.const 135 - i32.const 3 + i32.const 40 + i32.const 5 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - i32.const 17892 - i32.sub + local.get $0 + br_if $do-loop|03 + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $10 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $do-loop|05 + local.get $5 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.add + local.tee $5 + i32.const 10 + i32.ne + br_if $do-loop|05 + end + local.get $5 + i32.const 10 + i32.ne + if i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $do-loop|07 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 10 + i32.ne + br_if $do-loop|07 + end + local.get $4 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + loop $do-loop|015 + local.get $9 + i32.const 1 + i32.add + local.tee $9 + i32.const 10 + i32.ne + i32.const 0 + local.get $9 + select + br_if $do-loop|015 + end + local.get $9 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $do-loop|017 + local.get $8 + i32.const 1 + i32.add + local.tee $8 + i32.const 10 + i32.ne + if + loop $do-loop|120 + local.get $7 + i32.const 1 + i32.add + local.tee $7 + i32.const 10 + i32.rem_s + i32.const 0 + local.get $7 + select + br_if $do-loop|120 + end + local.get $8 + br_if $do-loop|017 + end + end + local.get $8 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 90 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17892 + 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 + 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 1508 i32.lt_s @@ -1300,11 +1292,11 @@ local.get $0 call $do/Ref#constructor i32.store - loop $do-loop|06 - local.get $1 + loop $do-loop|08 + local.get $3 i32.const 1 i32.add - local.tee $1 + local.tee $3 i32.const 10 i32.eq if @@ -1317,9 +1309,9 @@ i32.store end local.get $0 - br_if $do-loop|06 + br_if $do-loop|08 end - local.get $1 + local.get $3 i32.const 10 i32.ne if @@ -1343,8 +1335,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1359,10 +1349,10 @@ i32.store local.get $0 call $do/Ref#constructor - local.tee $1 + local.tee $0 i32.store - loop $do-loop|08 - block $do-break|09 + loop $do-loop|012 + block $do-break|011 local.get $2 i32.const 1 i32.add @@ -1371,11 +1361,11 @@ i32.eq if i32.const 0 - local.set $1 - br $do-break|09 + local.set $0 + br $do-break|011 end call $do/Ref#constructor - br_if $do-loop|08 + br_if $do-loop|012 end end local.get $2 @@ -1389,7 +1379,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1056 @@ -1498,7 +1488,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1535,13 +1525,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1575,16 +1565,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1637,7 +1627,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1652,7 +1642,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1675,8 +1665,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1689,11 +1679,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1708,7 +1698,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1720,7 +1710,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1740,19 +1730,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1762,22 +1752,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17892 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1791,7 +1781,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1803,7 +1793,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1811,15 +1801,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1827,7 +1817,7 @@ else i32.const 1472 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1280 @@ -1837,7 +1827,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1476 @@ -1855,25 +1845,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index 36f878bfc5..9973399dfc 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -168,10 +168,10 @@ local.get $0 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -179,7 +179,7 @@ else i32.const 1568 i32.load - local.get $2 + local.get $1 i32.lt_u if i32.const 1248 @@ -189,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1572 @@ -198,33 +198,31 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 ) @@ -822,38 +820,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17980 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17980 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -869,221 +940,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - i32.const 17980 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17980 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17980 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17980 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17980 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1279,11 +1275,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1294,15 +1290,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1480,8 +1477,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1777,8 +1774,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat index 25c28ebc6f..a4ef4381ca 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.optimized.wat @@ -670,38 +670,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17852 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17852 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -717,221 +790,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - i32.const 17852 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17852 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17852 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17852 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17852 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1087,13 +1085,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1281,19 +1279,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1303,22 +1301,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17852 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1332,7 +1330,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1344,7 +1342,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1352,15 +1350,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1368,7 +1366,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1378,7 +1376,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1396,25 +1394,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 3c66d1990d..9acd68bb8b 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -724,38 +724,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17868 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -771,221 +844,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17868 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17868 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17868 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1083,13 +1081,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1180,17 +1178,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1199,19 +1197,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1241,8 +1239,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1272,28 +1270,29 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1451,11 +1450,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1545,11 +1544,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1620,19 +1619,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1642,22 +1641,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17868 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1671,7 +1670,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1683,7 +1682,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1691,15 +1690,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1707,7 +1706,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1717,7 +1716,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1735,25 +1734,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index 50c1473a52..71db4dbb90 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -725,38 +725,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17956 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -772,221 +845,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17956 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17956 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17956 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17956 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1084,132 +1082,134 @@ ) (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 1572 - i32.lt_s - br_if $folding-inner0 + block $__inlined_func$start:exportstar-rereexport global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17956 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if + i32.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1504 - i32.const 24 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17956 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:exportstar-rereexport end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) (func $exports/Car#constructor (result i32) (local $0 i32) @@ -1233,7 +1233,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1270,13 +1270,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1310,16 +1310,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1372,7 +1372,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1387,7 +1387,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1410,8 +1410,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1424,11 +1424,11 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1443,7 +1443,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1459,33 +1459,34 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 local.get $0 i32.store local.get $0 @@ -1508,19 +1509,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1530,22 +1531,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17956 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1559,7 +1560,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1571,7 +1572,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1579,15 +1580,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1595,7 +1596,7 @@ else i32.const 1536 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1296 @@ -1605,7 +1606,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1540 @@ -1623,25 +1624,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 820757f700..19933ed0f0 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -2,8 +2,8 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -198,19 +198,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -822,38 +820,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18156 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -869,221 +940,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18156 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18156 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18156 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18156 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1552 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1455,11 +1451,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1470,19 +1466,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1490,7 +1487,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1501,16 +1498,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1521,16 +1518,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1538,7 +1535,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1546,8 +1543,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1564,7 +1561,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1574,13 +1571,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1593,40 +1590,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1656,8 +1653,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2373,230 +2370,334 @@ i32.store8 end ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.const 20 - i32.sub - local.tee $2 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + i32.const 1180 i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u + local.tee $10 + i32.const 1 + i32.add + local.tee $8 + i32.const 1176 + i32.load + local.tee $9 + i32.const 2 + i32.shr_u + i32.gt_u if - local.get $2 - local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $1 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $4 - local.get $1 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $5 - block $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.tee $1 - local.get $0 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.sub - local.get $5 - i32.sub - i32.const 0 - local.get $5 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $1 - local.get $0 - local.get $5 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 + local.get $8 + i32.const 268435455 i32.gt_u if - local.get $0 - i32.const 7 - i32.and + i32.const 1616 + i32.const 1664 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $9 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1073741820 local.get $1 - i32.const 7 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 + local.get $8 + i32.const 8 + local.get $8 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + local.tee $7 + i32.const 1168 + i32.load + local.tee $11 + local.tee $1 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 i32.and - i32.eq + i32.const 16 + i32.sub + i32.le_u if - loop $while-continue|0 + local.get $3 + local.get $7 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $7 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $5 + local.set $2 + local.get $7 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $7 + i32.gt_u + select + local.set $6 + block $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $2 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $2 + i32.sub + local.get $6 + i32.sub + i32.const 0 + local.get $6 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + local.get $6 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + local.get $2 + i32.gt_u + if local.get $1 i32.const 7 i32.and + local.get $2 + i32.const 7 + i32.and + i32.eq if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 + loop $while-continue|0 + local.get $2 + i32.const 7 + i32.and + if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $2 + local.tee $3 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $6 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $1 + i64.load + i64.store + local.get $6 + i32.const 8 + i32.sub + local.set $6 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end end - end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 + loop $while-continue|2 + local.get $6 + if + local.get $2 + local.tee $3 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end end - end - end - loop $while-continue|2 - local.get $5 - if + else local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 + i32.const 7 + i32.and local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $5 - i32.add i32.const 7 i32.and + i32.eq if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 + loop $while-continue|3 + local.get $2 + local.get $6 + i32.add + i32.const 7 + i32.and + if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + local.get $2 + i32.add + local.get $1 + local.get $6 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $6 + i32.const 8 + i32.ge_u + if + local.get $6 + i32.const 8 + i32.sub + local.tee $6 + local.get $2 + i32.add + local.get $1 + local.get $6 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i64.load - i64.store - br $while-continue|4 + loop $while-continue|5 + local.get $6 + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + local.get $2 + i32.add + local.get $1 + local.get $6 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end end end end - loop $while-continue|5 - local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $5 + local.set $1 + end + local.get $1 + local.get $9 + i32.add + local.get $7 + local.get $9 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $11 + i32.ne + if + i32.const 1168 + local.get $1 + i32.store + i32.const 1172 + local.get $1 + i32.store + local.get $1 + if + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end end + i32.const 1176 + local.get $7 + i32.store end - local.get $4 + i32.const 1172 + i32.load + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $0 + i32.store + local.get $0 + if + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + i32.const 1180 + local.get $8 + i32.store ) (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) @@ -2686,16 +2787,11 @@ (func $~start (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.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s @@ -2801,104 +2897,8 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 1180 - i32.load - local.tee $1 - i32.const 1 - i32.add - local.tee $2 - local.tee $5 - i32.const 1176 - i32.load - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $5 - i32.const 268435455 - i32.gt_u - if - i32.const 1616 - i32.const 1664 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 1168 - i32.load - local.tee $3 - local.get $4 - i32.const 1 - i32.shl - local.tee $6 - i32.const 1073741820 - local.get $6 - i32.const 1073741820 - i32.lt_u - select - local.tee $6 - local.get $5 - i32.const 8 - local.get $5 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $5 - local.get $5 - local.get $6 - i32.lt_u - select - local.tee $5 - call $~lib/rt/itcms/__renew - local.tee $6 - i32.add - local.get $5 - local.get $4 - i32.sub - call $~lib/memory/memory.fill - local.get $3 - local.get $6 - i32.ne - if - i32.const 1168 - local.get $6 - i32.store - i32.const 1172 - local.get $6 - i32.store - local.get $6 - if - local.get $6 - i32.const 0 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - end - i32.const 1176 - local.get $5 - i32.store - end - i32.const 1172 - i32.load - local.get $1 - i32.const 2 - i32.shl - i32.add local.get $0 - i32.store - local.get $0 - if - local.get $0 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - i32.const 1180 - local.get $2 - i32.store + call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer i32.const 8 i32.add diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 2b3d08b7b4..f5b4813af7 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -187,19 +187,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -811,38 +809,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17868 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -858,221 +929,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17868 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17868 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17868 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1170,13 +1166,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1267,17 +1263,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1286,19 +1282,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1328,8 +1324,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1359,28 +1355,29 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1558,11 +1555,11 @@ ) (func $export:extends-recursive/Child#constructor (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1593,7 +1590,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1620,6 +1616,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.store global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 7b09a7e9a6..84777455ed 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -736,7 +736,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -748,6 +747,7 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -857,7 +857,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -871,17 +871,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -892,19 +892,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 983d7b4f3f..32d67a3f0b 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -205,19 +205,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -829,38 +827,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18380 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -876,221 +947,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18380 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18380 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18380 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18380 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1462,11 +1458,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1477,19 +1473,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1497,7 +1494,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1508,16 +1505,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1528,16 +1525,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1545,7 +1542,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1553,8 +1550,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1571,7 +1568,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1581,13 +1578,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1600,40 +1597,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1663,8 +1660,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1702,6 +1699,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1736,47 +1734,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1787,17 +1785,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1810,7 +1807,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1898,6 +1897,7 @@ (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 40 i32.sub @@ -1997,7 +1997,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2006,16 +2005,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer @@ -2023,8 +2022,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2036,7 +2036,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2045,22 +2044,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -2069,8 +2068,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2083,7 +2083,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2092,22 +2091,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 6 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -2116,8 +2115,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2130,7 +2130,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2139,16 +2138,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 7 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer @@ -2156,8 +2155,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2169,7 +2169,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2178,16 +2177,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer @@ -2195,8 +2194,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2208,7 +2208,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2217,16 +2216,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 9 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.store global.get $~lib/memory/__stack_pointer @@ -2234,8 +2233,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.const 1 i32.ne @@ -2249,7 +2249,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2258,19 +2257,19 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 10 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.store global.get $~lib/memory/__stack_pointer @@ -2278,8 +2277,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.const 1 i32.ne @@ -2293,7 +2293,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2302,22 +2301,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -2326,8 +2325,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2340,7 +2340,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2349,25 +2348,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 12 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -2376,8 +2375,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2402,31 +2402,32 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 4 i32.const 13 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 + local.tee $1 i32.store local.get $0 if - local.get $2 - local.get $0 + local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=4 - local.get $2 + local.get $3 i32.load local.get $0 i32.ne @@ -2440,7 +2441,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2449,16 +2449,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 14 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer @@ -2466,8 +2466,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2479,7 +2480,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2488,22 +2488,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 15 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -2512,8 +2512,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2526,7 +2527,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2535,25 +2535,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 16 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -2562,8 +2562,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2576,7 +2577,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2585,27 +2585,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 17 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 call $field-initialization/Inherit_Base#constructor - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2618,7 +2619,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2627,27 +2627,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 19 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 call $field-initialization/Inherit_Base#constructor - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load i32.eqz if @@ -2991,7 +2992,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3000,25 +3000,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 22 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $0 + local.get $1 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -3027,8 +3027,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.eqz if diff --git a/tests/compiler/field.optimized.wat b/tests/compiler/field.optimized.wat index 9f4d2c187a..ad24b303df 100644 --- a/tests/compiler/field.optimized.wat +++ b/tests/compiler/field.optimized.wat @@ -183,19 +183,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -807,38 +805,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17908 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -854,221 +925,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17908 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17908 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end - i32.const 0 - return - end - global.get $~lib/rt/itcms/visitCount + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + 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) @@ -1264,11 +1260,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1279,15 +1275,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1465,8 +1462,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2366,137 +2363,91 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 + (local $7 i32) + (local $8 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 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store + local.get $7 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $5 + 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 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $8 + i32.const 0 + i32.store + i32.const 1456 + local.set $1 + block $~lib/util/memory/memmove|inlined.0 i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.const 3 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 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer local.tee $0 - i32.const 0 - i32.store + i32.const 1456 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 local.get $0 i32.const 1456 - local.set $1 - block $~lib/util/memory/memmove|inlined.0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - local.tee $0 - i32.const 1456 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 + i32.eq + if local.get $0 - i32.const 1456 - i32.eq - if - local.get $0 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + i32.const 1456 + i32.lt_u + if local.get $0 - i32.const 1456 - i32.lt_u + i32.const 7 + i32.and + i32.eqz if - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $6 - i32.const 8 - i32.sub - local.set $6 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $6 + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 local.get $0 local.tee $2 i32.const 1 @@ -2511,66 +2462,74 @@ local.get $3 i32.load8_u i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 + br $while-continue|0 end end - else - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 + loop $while-continue|1 + local.get $6 + i32.const 8 + i32.ge_u + if local.get $0 + local.get $1 + i64.load + i64.store local.get $6 + i32.const 8 + i32.sub + local.set $6 + local.get $0 + i32.const 8 i32.add - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - local.get $0 - i32.add - local.get $6 - i32.const 1456 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $6 + local.set $0 + local.get $1 i32.const 8 - i32.ge_u - if - local.get $6 - i32.const 8 - i32.sub - local.tee $6 - local.get $0 - i32.add - local.get $6 - i32.const 1456 - i32.add - i64.load - i64.store - br $while-continue|4 - end + i32.add + local.set $1 + br $while-continue|1 end end - loop $while-continue|5 + end + loop $while-continue|2 + local.get $6 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|3 + local.get $0 local.get $6 + i32.add + i32.const 7 + i32.and if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 local.get $6 i32.const 1 i32.sub @@ -2582,145 +2541,102 @@ i32.add i32.load8_u i32.store8 - br $while-continue|5 + br $while-continue|3 end end - end - end - local.get $5 - i32.store - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $5 - i32.store - local.get $5 - if - local.get $1 - i32.eqz - br_if $folding-inner1 - global.get $~lib/rt/itcms/white - local.get $5 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - 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 $0 - 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 + loop $while-continue|4 + local.get $6 + i32.const 8 + i32.ge_u if + local.get $6 + i32.const 8 + i32.sub + local.tee $6 local.get $0 - call $~lib/rt/itcms/Object#makeGray + i32.add + local.get $6 + i32.const 1456 + i32.add + i64.load + i64.store + br $while-continue|4 end end end - end - local.get $1 - local.get $5 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.tee $0 - local.get $1 - i32.store - local.get $1 - if - local.get $0 - i32.eqz - br_if $folding-inner1 - 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 + loop $while-continue|5 + local.get $6 if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state + local.get $6 i32.const 1 - i32.eq + i32.sub + local.tee $6 local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.add + local.get $6 + i32.const 1456 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 end end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + end + local.get $8 + local.get $4 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $4 + i32.store + local.get $4 + if + local.get $0 local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + call $byn-split-outlined-A$~lib/rt/itcms/__link end - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $0 + i32.store + local.get $0 + if + local.get $5 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) @@ -2728,59 +2644,62 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $folding-inner1 $invalid + end + return end return end - return - end - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 local.get $1 - i32.load - local.tee $3 + local.get $2 + i32.lt_u if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 end + br $folding-inner1 end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable + return end local.get $0 i32.load @@ -2877,4 +2796,53 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 + ) ) diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 50bf8dd7c8..b281f13bd8 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -674,38 +674,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17892 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -721,221 +794,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17892 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17892 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17892 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17892 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -998,281 +996,276 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - loop $for-loop|0 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $0 + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + loop $for-loop|0 + local.get $1 i32.const 10 - i32.ne + i32.lt_s if - i32.const 0 - i32.const 1056 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end + end + local.get $1 + i32.const 10 + i32.ne + if i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1056 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|01 + local.get $3 i32.const 10 - local.set $0 - loop $for-loop|01 - local.get $0 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|01 - end - end - local.get $0 + i32.lt_s if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|01 end + end + local.get $3 + i32.const 10 + i32.ne + if i32.const 0 - local.set $0 - loop $for-loop|02 - local.get $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $0 - i32.const 10 - i32.ne + i32.const 1056 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $1 + loop $for-loop|04 + local.get $1 + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $for-loop|03 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.tee $0 - br_if $for-loop|03 - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + br $for-loop|04 end + end + local.get $1 + if i32.const 0 - local.set $0 - loop $for-loop|05 - local.get $0 + i32.const 1056 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|07 + local.get $4 + i32.const 10 + i32.ne + if + local.get $4 i32.const 1 i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $for-loop|05 + local.set $4 + br $for-loop|07 end - local.get $0 + end + local.get $4 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $1 + loop $for-loop|010 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + br_if $for-loop|010 + end + local.get $1 + if + i32.const 0 + i32.const 1056 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|013 + local.get $7 + i32.const 1 + i32.add + local.tee $7 i32.const 10 i32.ne + br_if $for-loop|013 + end + local.get $7 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|016 + local.get $5 + i32.const 10 + i32.lt_s if - i32.const 0 - i32.const 1056 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|016 end + end + local.get $5 + i32.const 10 + i32.ne + if i32.const 0 - local.set $0 - loop $for-loop|07 - local.get $0 - i32.const 10 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|07 - end - end + i32.const 1056 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|025 local.get $0 i32.const 10 - i32.ne + i32.lt_s if - i32.const 0 - i32.const 1056 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|08 local.get $0 - i32.const 10 - i32.lt_s + i32.const 2 + i32.ge_s if - local.get $0 - i32.const 2 - i32.ge_s - if - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 10 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i32.const 10 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.add + local.get $6 + local.get $0 + local.get $2 i32.lt_s - if - local.get $2 - i32.const 1 - i32.add - local.get $2 - local.get $0 - local.get $1 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + select + local.set $6 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 end end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|08 end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|025 end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 28 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17892 - 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 + end + local.get $0 + i32.const 10 + i32.ne + if i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 28 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17892 + 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 + 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 1508 i32.lt_s @@ -1283,30 +1276,30 @@ i32.store local.get $0 call $for/Ref#constructor - local.tee $1 + local.tee $0 i32.store - loop $for-loop|06 - local.get $1 + loop $for-loop|08 + local.get $0 if - local.get $2 + local.get $8 i32.const 1 i32.add - local.tee $2 + local.tee $8 i32.const 10 i32.eq if i32.const 0 - local.set $1 + local.set $0 else global.get $~lib/memory/__stack_pointer call $for/Ref#constructor - local.tee $1 + local.tee $0 i32.store end - br $for-loop|06 + br $for-loop|08 end end - local.get $2 + local.get $8 i32.const 10 i32.ne if @@ -1317,7 +1310,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1056 @@ -1330,8 +1323,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1351,30 +1342,30 @@ call $for/Ref#constructor local.tee $0 i32.store - loop $for-loop|09 + loop $for-loop|012 call $for/Ref#constructor if - block $for-break010 - local.get $1 + block $for-break011 + local.get $9 i32.const 1 i32.add - local.tee $1 + local.tee $9 i32.const 10 i32.eq if i32.const 0 local.set $0 - br $for-break010 + br $for-break011 end global.get $~lib/memory/__stack_pointer call $for/Ref#constructor local.tee $0 i32.store - br $for-loop|09 + br $for-loop|012 end end end - local.get $1 + local.get $9 i32.const 10 i32.ne if @@ -1494,7 +1485,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1531,13 +1522,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1571,16 +1562,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1633,7 +1624,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1648,7 +1639,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1671,8 +1662,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1685,11 +1676,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1704,7 +1695,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1716,7 +1707,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1736,19 +1727,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1758,22 +1749,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17892 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1787,7 +1778,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1799,7 +1790,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1807,15 +1798,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1823,7 +1814,7 @@ else i32.const 1472 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1280 @@ -1833,7 +1824,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1476 @@ -1851,25 +1842,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index 2316b256cb..26a04e5b86 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -4,10 +4,10 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -712,38 +712,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18220 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -759,221 +832,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18220 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18220 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18220 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18220 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1032,25 +1030,253 @@ end end ) - (func $function-call/Foo#fnVoid (param $0 i32) - nop - ) - (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - 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 - local.get $0 - i32.const 8 - i32.sub - i32.load + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $0 + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $0 + 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.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $1 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 + 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 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 6 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + ) + (func $function-call/Foo#fnVoid (param $0 i32) + nop + ) + (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + local.get $2 + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid end return @@ -1080,10 +1306,6 @@ ) (func $~start (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1187,232 +1409,11 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 - call $~lib/rt/tlsf/searchBlock local.tee $0 - i32.eqz - if - memory.size - local.tee $0 - i32.const 4 - local.get $3 - i32.load offset=1568 - local.get $0 - 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.tee $2 - local.get $0 - 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 $3 - local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $4 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $4 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - 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 $0 - local.get $4 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $0 - 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 $0 - i32.const 6 - i32.store offset=12 - local.get $0 i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $3 - local.get $0 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 + i32.store local.get $0 - i32.const 20 - i32.add + call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1484,19 +1485,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1506,22 +1507,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 18220 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1535,7 +1536,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1547,7 +1548,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1555,15 +1556,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1571,7 +1572,7 @@ else i32.const 1760 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1472 @@ -1581,7 +1582,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1764 @@ -1599,25 +1600,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index b631942f37..dad8c5e4aa 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -251,19 +251,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -875,38 +873,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18580 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -922,221 +993,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18580 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1664 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18580 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 1664 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18580 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18580 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 1936 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1936 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1195,337 +1191,463 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) + local.get $0 + ) + (func $function-expression/semanticallyAnonymous (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 2064 + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock + local.get $0 + i32.load offset=4 local.tee $0 - i32.eqz if - memory.size - local.tee $0 - i32.const 4 - local.get $2 - i32.load offset=1568 local.get $0 - 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 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:function-expression + ) + (func $function-expression/testField + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $0 + i64.const 0 + i64.store local.get $1 - i32.gt_s - select - memory.grow i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 2032 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $0 + 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 $4 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $4 + i32.load offset=1568 + local.get $0 + 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.tee $2 + local.get $0 + 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 $4 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort unreachable end end - local.get $2 local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1936 - i32.const 496 - i32.const 16 + i32.const 498 + i32.const 14 call $~lib/builtins/abort unreachable end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1936 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $1 - i32.const 16 - i32.ge_u - if + local.get $4 local.get $0 - local.get $3 - i32.const 2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $5 + i32.const -4 i32.and i32.const 28 - i32.or - i32.store + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $5 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $5 + local.get $2 + 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 $0 + local.get $5 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + 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 $0 + i32.const 8 + i32.store offset=12 local.get $0 - i32.const 32 - i32.add - local.tee $3 - local.get $1 i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $0 local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 local.get $0 - local.get $3 - i32.const -2 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const 3 i32.and - i32.store local.get $0 - i32.const 4 - i32.add + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $0 i32.load i32.const -4 i32.and + i32.const 4 i32.add - local.tee $1 - local.get $1 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 8 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $1 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - ) - (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) - local.get $0 - ) - (func $function-expression/semanticallyAnonymous - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - if - i32.const 18608 - i32.const 18656 - i32.const 1 + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 2064 - i32.store - local.get $0 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $2 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $2 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + local.get $0 + i32.store + local.get $0 + i32.const 2032 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + i32.const 2016 + i32.load + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 2012 + 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 + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray end - return end - unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.load offset=4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + i32.load + call_indirect $0 (type $none_=>_i32) local.tee $0 + i32.store offset=8 + i32.const 1 + local.get $0 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 25 + i32.ne if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit + i32.const 0 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~start + (func $start:function-expression (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2196 i32.lt_s @@ -1783,119 +1905,7 @@ i32.store i32.const 1888 global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 2032 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 2032 - i32.store - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - i32.const 2016 - i32.load - i32.const 3 - i32.and - i32.eq - if - local.get $1 - 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 - i32.const 2012 - 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 - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $0 - i32.store offset=8 - i32.const 1 - local.get $0 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $function-expression/testField call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/function-inline-regressions.json b/tests/compiler/function-inline-regressions.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/function-inline-regressions.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/function-inline-regressions.optimized.wat b/tests/compiler/function-inline-regressions.optimized.wat new file mode 100644 index 0000000000..ff233bbc55 --- /dev/null +++ b/tests/compiler/function-inline-regressions.optimized.wat @@ -0,0 +1,42 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result 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 + i32.const 1 + i32.shl + local.tee $3 + i32.load offset=1 + local.get $3 + i32.load + i32.const 16 + i32.load + local.tee $3 + i32.add + i32.add + if + unreachable + end + i32.const 0 + local.get $0 + i32.store + i32.const 4 + local.get $1 + i32.store + i32.const 8 + local.get $2 + i32.store + local.get $3 + ) +) diff --git a/tests/compiler/function-inline-regressions.ts b/tests/compiler/function-inline-regressions.ts new file mode 100644 index 0000000000..32c19e274f --- /dev/null +++ b/tests/compiler/function-inline-regressions.ts @@ -0,0 +1,35 @@ +@unmanaged class Struct { + v0: u32; + v1: u32; + v2: u32; +} + +// @inline +function loadZ() : u32 { + return load(16); +} + +// @inline +function loadX(a: i32, b: i32): u32 { + return load(2 * a + b); +} + +export function baz(v: u32): void { + if (v) unreachable(); +} + +export function foo(v0: i32, v1: i32, v2: i32): u32 { + const x = loadX(v0, 0); + const y = loadX(v0, 1); + const z = loadZ(); + + baz(z + x + y); + + struct.v0 = v0; + struct.v1 = v1; + struct.v2 = v2; + + return z; +} + +const struct = changetype(0); diff --git a/tests/compiler/function-inline-regressions.untouched.wat b/tests/compiler/function-inline-regressions.untouched.wat new file mode 100644 index 0000000000..237654cefe --- /dev/null +++ b/tests/compiler/function-inline-regressions.untouched.wat @@ -0,0 +1,81 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (global $function-inline-regressions/struct i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) + (memory $0 0) + (table $0 1 funcref) + (elem $0 (i32.const 1)) + (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/loadX (param $0 i32) (param $1 i32) (result i32) + i32.const 2 + local.get $0 + i32.mul + local.get $1 + i32.add + i32.load + ) + (func $function-inline-regressions/loadZ (result i32) + i32.const 16 + i32.load + ) + (func $function-inline-regressions/Struct#set:v0 (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $function-inline-regressions/Struct#set:v1 (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $function-inline-regressions/Struct#set:v2 (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $function-inline-regressions/foo (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 0 + call $function-inline-regressions/loadX + local.set $3 + local.get $0 + i32.const 1 + call $function-inline-regressions/loadX + local.set $4 + call $function-inline-regressions/loadZ + local.set $5 + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.add + call $function-inline-regressions/baz + global.get $function-inline-regressions/struct + local.get $0 + call $function-inline-regressions/Struct#set:v0 + global.get $function-inline-regressions/struct + local.get $1 + call $function-inline-regressions/Struct#set:v1 + global.get $function-inline-regressions/struct + local.get $2 + call $function-inline-regressions/Struct#set:v2 + local.get $5 + ) +) diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 7b0fd33255..1f363e14e9 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -41,11 +41,11 @@ (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1228 i32.lt_s @@ -187,9 +187,10 @@ end unreachable end + i32.const 1056 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 1056 - local.tee $0 i32.store end i32.const 2 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 947f743f02..848473f30a 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -677,38 +677,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17900 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -724,221 +797,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17900 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17900 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17900 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17900 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1095,7 +1093,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1132,13 +1130,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1172,16 +1170,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1234,7 +1232,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1249,7 +1247,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1272,8 +1270,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1286,11 +1284,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1305,7 +1303,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1317,7 +1315,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1369,19 +1367,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1391,22 +1389,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17900 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1420,7 +1418,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1432,7 +1430,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1440,15 +1438,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1456,7 +1454,7 @@ else i32.const 1472 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1466,7 +1464,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1476 @@ -1484,25 +1482,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index 62063b669b..7f0815b046 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -1678,14 +1678,14 @@ local.get $0 local.get $2 call $~lib/rt/tlsf/allocateBlock - local.set $6 + local.set $7 local.get $1 i32.load i32.const -4 i32.and - local.set $7 + local.set $6 block $~lib/util/memory/memmove|inlined.0 - local.get $6 + local.get $7 i32.const 4 i32.add local.tee $2 @@ -1698,10 +1698,10 @@ local.get $3 local.get $2 i32.sub - local.get $7 + local.get $6 i32.sub i32.const 0 - local.get $7 + local.get $6 i32.const 1 i32.shl i32.sub @@ -1709,7 +1709,7 @@ if local.get $2 local.get $3 - local.get $7 + local.get $6 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -1730,13 +1730,13 @@ i32.const 7 i32.and if - local.get $7 + local.get $6 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 + local.get $6 i32.const 1 i32.sub - local.set $7 + local.set $6 local.get $2 local.tee $4 i32.const 1 @@ -1755,7 +1755,7 @@ end end loop $while-continue|1 - local.get $7 + local.get $6 i32.const 8 i32.ge_u if @@ -1763,10 +1763,10 @@ local.get $3 i64.load i64.store - local.get $7 + local.get $6 i32.const 8 i32.sub - local.set $7 + local.set $6 local.get $2 i32.const 8 i32.add @@ -1780,7 +1780,7 @@ end end loop $while-continue|2 - local.get $7 + local.get $6 if local.get $2 local.tee $4 @@ -1796,10 +1796,10 @@ local.get $5 i32.load8_u i32.store8 - local.get $7 + local.get $6 i32.const 1 i32.sub - local.set $7 + local.set $6 br $while-continue|2 end end @@ -1814,22 +1814,22 @@ if loop $while-continue|3 local.get $2 - local.get $7 + local.get $6 i32.add i32.const 7 i32.and if - local.get $7 + local.get $6 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 + local.get $6 i32.const 1 i32.sub - local.tee $7 + local.tee $6 local.get $2 i32.add local.get $3 - local.get $7 + local.get $6 i32.add i32.load8_u i32.store8 @@ -1837,18 +1837,18 @@ end end loop $while-continue|4 - local.get $7 + local.get $6 i32.const 8 i32.ge_u if - local.get $7 + local.get $6 i32.const 8 i32.sub - local.tee $7 + local.tee $6 local.get $2 i32.add local.get $3 - local.get $7 + local.get $6 i32.add i64.load i64.store @@ -1857,16 +1857,16 @@ end end loop $while-continue|5 - local.get $7 + local.get $6 if - local.get $7 + local.get $6 i32.const 1 i32.sub - local.tee $7 + local.tee $6 local.get $2 i32.add local.get $3 - local.get $7 + local.get $6 i32.add i32.load8_u i32.store8 @@ -1889,7 +1889,7 @@ local.get $1 call $~lib/rt/tlsf/insertBlock end - local.get $6 + local.get $7 ) (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1906,82 +1906,87 @@ local.get $0 i32.const 17660 i32.lt_u - if (result i32) + if global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.get $1 call $~lib/rt/tlsf/moveBlock + local.set $0 else - block $__inlined_func$~lib/rt/tlsf/reallocateBlock (result i32) + block $__inlined_func$~lib/rt/tlsf/reallocateBlock global.get $~lib/rt/tlsf/ROOT local.set $2 local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.set $6 - block $folding-inner0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $4 - local.get $6 - i32.load - local.tee $0 - i32.const -4 - i32.and - local.tee $5 - i32.le_u - br_if $folding-inner0 + local.set $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + local.get $0 + i32.load + local.tee $4 + i32.const -4 + i32.and + local.tee $6 + i32.le_u + if + local.get $2 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock + end + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + i32.load + local.tee $7 + i32.const 1 + i32.and + if local.get $6 i32.const 4 i32.add - local.get $6 - i32.load + local.get $7 i32.const -4 i32.and i32.add - local.tee $3 - i32.load - local.tee $7 - i32.const 1 - i32.and + local.tee $6 + local.get $3 + i32.ge_u if - local.get $4 + local.get $2 local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.const -4 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $6 + local.get $4 + i32.const 3 i32.and - i32.add - local.tee $5 - i32.le_u - if - local.get $2 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $6 - local.get $5 - local.get $0 - i32.const 3 - i32.and - i32.or - i32.store - br $folding-inner0 - end + i32.or + i32.store + local.get $2 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $2 - local.get $6 - local.get $1 - call $~lib/rt/tlsf/moveBlock - br $__inlined_func$~lib/rt/tlsf/reallocateBlock end local.get $2 - local.get $6 - local.get $4 - call $~lib/rt/tlsf/prepareBlock - local.get $6 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/moveBlock + local.set $0 end end + local.get $0 i32.const 4 i32.add ) diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 4c5afbfd43..1fdd91429c 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -193,19 +193,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -817,38 +815,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17868 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -864,221 +935,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17868 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17868 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17868 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1176,13 +1172,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1273,17 +1269,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1292,19 +1288,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1334,8 +1330,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1365,28 +1361,29 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1514,11 +1511,11 @@ ) (func $export:implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1636,11 +1633,11 @@ ) (func $export:implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index 53d477f058..2159ac4362 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -219,19 +219,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -843,38 +841,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18596 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -890,221 +961,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18596 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18596 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18596 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18596 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1300,11 +1296,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1315,15 +1311,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1501,8 +1498,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2412,83 +2409,83 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2212 - i32.lt_s - if - i32.const 18624 - i32.const 18672 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 18596 - i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2212 + i32.lt_s + if + i32.const 18624 + i32.const 18672 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 1056 - call $~lib/rt/__newArray - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1536 - call $~lib/rt/__newArray - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 5 - i32.const 1584 - call $~lib/rt/__newArray - local.tee $0 - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 18596 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 1056 + call $~lib/rt/__newArray + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 4 + i32.const 1536 + call $~lib/rt/__newArray + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 5 + i32.const 1584 + call $~lib/rt/__newArray + local.tee $0 + i32.store + block $folding-inner0 local.get $0 i32.load offset=12 i32.const 1 @@ -2703,20 +2700,30 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner2 - block $folding-inner1 + block $folding-inner1 + block $folding-inner0 block $invalid block $infer-array/Ref - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -2724,34 +2731,6 @@ unreachable end local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 i32.load local.tee $0 if @@ -2761,6 +2740,34 @@ return end local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 i32.load local.tee $0 if @@ -2794,21 +2801,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $9 i32.const 0 i32.store local.get $0 local.get $1 i32.shl local.tee $8 - local.set $9 - local.get $8 i32.const 0 call $~lib/rt/itcms/__new local.set $6 local.get $3 if block $~lib/util/memory/memmove|inlined.0 + local.get $8 + local.set $7 local.get $6 local.tee $1 local.get $3 @@ -2817,10 +2824,10 @@ local.get $3 local.get $1 i32.sub - local.get $9 + local.get $7 i32.sub i32.const 0 - local.get $9 + local.get $7 i32.const 1 i32.shl i32.sub @@ -2828,7 +2835,7 @@ if local.get $1 local.get $3 - local.get $9 + local.get $7 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -2849,13 +2856,13 @@ i32.const 7 i32.and if - local.get $9 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $9 + local.get $7 i32.const 1 i32.sub - local.set $9 + local.set $7 local.get $1 local.tee $4 i32.const 1 @@ -2874,7 +2881,7 @@ end end loop $while-continue|1 - local.get $9 + local.get $7 i32.const 8 i32.ge_u if @@ -2882,10 +2889,10 @@ local.get $3 i64.load i64.store - local.get $9 + local.get $7 i32.const 8 i32.sub - local.set $9 + local.set $7 local.get $1 i32.const 8 i32.add @@ -2899,7 +2906,7 @@ end end loop $while-continue|2 - local.get $9 + local.get $7 if local.get $1 local.tee $4 @@ -2915,10 +2922,10 @@ local.get $5 i32.load8_u i32.store8 - local.get $9 + local.get $7 i32.const 1 i32.sub - local.set $9 + local.set $7 br $while-continue|2 end end @@ -2933,22 +2940,22 @@ if loop $while-continue|3 local.get $1 - local.get $9 + local.get $7 i32.add i32.const 7 i32.and if - local.get $9 + local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $9 + local.get $7 i32.const 1 i32.sub - local.tee $9 + local.tee $7 + local.get $1 i32.add local.get $3 - local.get $9 + local.get $7 i32.add i32.load8_u i32.store8 @@ -2956,18 +2963,18 @@ end end loop $while-continue|4 - local.get $9 + local.get $7 i32.const 8 i32.ge_u if - local.get $1 - local.get $9 + local.get $7 i32.const 8 i32.sub - local.tee $9 + local.tee $7 + local.get $1 i32.add local.get $3 - local.get $9 + local.get $7 i32.add i64.load i64.store @@ -2976,16 +2983,16 @@ end end loop $while-continue|5 - local.get $9 + local.get $7 if - local.get $1 - local.get $9 + local.get $7 i32.const 1 i32.sub - local.tee $9 + local.tee $7 + local.get $1 i32.add local.get $3 - local.get $9 + local.get $7 i32.add i32.load8_u i32.store8 @@ -2995,7 +3002,7 @@ end end end - local.get $7 + local.get $9 local.get $6 i32.store i32.const 16 diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 646bef4e1a..8b743ab165 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -699,38 +699,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18068 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -746,221 +819,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18068 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18068 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18068 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18068 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1568 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1058,13 +1056,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1216,8 +1214,8 @@ i32.load offset=8 local.set $2 local.get $0 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1247,28 +1245,29 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1279,37 +1278,47 @@ 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/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner1 $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid + 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 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end - unreachable + return end - local.get $0 - i32.load offset=4 - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return + unreachable end local.get $0 - i32.load + i32.load offset=4 local.tee $0 if local.get $0 @@ -1321,11 +1330,11 @@ (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 block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1684 i32.lt_s @@ -1345,15 +1354,15 @@ i32.store offset=4 i32.const 1164 i32.load - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 i32.const 1164 i32.load - local.tee $3 + local.tee $2 local.get $2 local.get $3 - i32.lt_s + i32.gt_s select local.get $0 i32.gt_s @@ -1413,7 +1422,6 @@ global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1422,14 +1430,14 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer @@ -1437,15 +1445,15 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -1493,19 +1501,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1515,22 +1523,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 18068 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1544,7 +1552,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1556,7 +1564,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1564,15 +1572,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1580,7 +1588,7 @@ else i32.const 1616 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1424 @@ -1590,7 +1598,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1620 @@ -1608,25 +1616,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 06cac7f4d7..30e159f4f7 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -686,38 +686,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17964 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -733,221 +806,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17964 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17964 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17964 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17964 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1143,11 +1141,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1158,15 +1156,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1344,8 +1343,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1675,13 +1674,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 16 i32.const 5 call $~lib/rt/itcms/__new @@ -1718,7 +1717,7 @@ local.get $0 i32.const 4 i32.store offset=12 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 local.get $0 @@ -1790,19 +1789,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1812,22 +1811,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17964 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1841,7 +1840,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1853,7 +1852,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1861,15 +1860,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1877,7 +1876,7 @@ else i32.const 1520 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1328 @@ -1887,7 +1886,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1524 @@ -1905,25 +1904,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index ce647effca..613c843881 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -688,38 +688,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17948 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -735,221 +808,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17948 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17948 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17948 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17948 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1047,13 +1045,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1144,17 +1142,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1163,19 +1161,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1205,8 +1203,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1239,43 +1237,43 @@ (func $start:instanceof-class (local $0 i32) (local $1 i32) + memory.size + i32.const 16 + i32.shl + i32.const 17948 + 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - memory.size - i32.const 16 - i32.shl - i32.const 17948 - 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1564 i32.lt_s @@ -1422,7 +1420,7 @@ i32.load i32.le_u if - loop $do-loop|010 + loop $do-loop|011 i32.const 1 local.get $0 i32.const 6 @@ -1436,7 +1434,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|010 + br_if $do-loop|011 end end i32.const 0 @@ -1512,19 +1510,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1534,22 +1532,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17948 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1563,7 +1561,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1575,7 +1573,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1583,15 +1581,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1599,7 +1597,7 @@ else i32.const 1504 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1609,7 +1607,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1508 @@ -1627,25 +1625,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index 280cf4e218..64cec2a8aa 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -187,19 +187,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -811,38 +809,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18004 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -858,221 +929,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18004 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18004 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18004 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18004 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1170,13 +1166,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1328,8 +1324,8 @@ i32.load offset=8 local.set $2 local.get $0 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1359,28 +1355,29 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1415,210 +1412,130 @@ (func $~start (local $0 i32) (local $1 i32) - block $folding-inner1 - block $folding-inner0 - global.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 - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 18004 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 1456 - i32.store - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/rt/itcms/white - i32.const 1440 - i32.load - 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 $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - i32.const 1436 - 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 - i32.const 1436 - call $~lib/rt/itcms/Object#makeGray - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load - local.tee $1 - i32.store - local.get $1 - i32.eqz - if - i32.const 1488 - i32.const 1552 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end + 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 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 18004 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 1456 + i32.store + local.get $0 + i32.const 1456 + call $byn-split-outlined-A$~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.eqz + if + i32.const 1488 + i32.const 1552 + i32.const 8 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store + local.get $1 + if local.get $0 local.get $1 - i32.store - local.get $1 - if - local.get $0 - i32.eqz - br_if $folding-inner1 - 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 - 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 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - i32.const 18032 - i32.const 18080 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 + i32.const 18032 + i32.const 18080 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) @@ -1641,4 +1558,53 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + 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 + ) ) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index cb2cba41e8..b5318efd08 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -683,38 +683,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17908 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -730,221 +803,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17908 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17908 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1003,31 +1001,91 @@ end end ) - (func $~lib/rt/itcms/__new (result i32) + (func $issues/1225/normal (result i32) + global.get $issues/1225/x + i32.load + ) + (func $issues/1225/viaThis (result i32) + global.get $issues/1225/x + i32.load offset=4 + ) + (func $start:issues/1225 (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 - i32.const 2048 - local.set $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul + (local $5 i32) + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul i64.const 100 i64.div_u i32.wrap_i64 @@ -1043,13 +1101,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1083,16 +1141,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $3 local.get $0 - local.get $2 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1140,17 +1198,17 @@ call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1159,19 +1217,19 @@ local.get $0 i32.const 32 i32.add - local.tee $2 - local.get $3 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $1 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1199,17 +1257,17 @@ global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 + local.set $3 local.get $0 local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and @@ -1231,7 +1289,7 @@ local.get $0 i32.const 20 i32.add - local.tee $2 + local.tee $3 local.tee $0 i32.const 0 i32.store8 @@ -1275,10 +1333,10 @@ i32.and local.tee $1 i32.add - local.tee $3 + local.tee $0 i32.const 0 i32.store - local.get $3 + local.get $0 i32.const 12 local.get $1 i32.sub @@ -1286,7 +1344,7 @@ i32.and local.tee $4 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 @@ -1296,18 +1354,18 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 @@ -1316,49 +1374,49 @@ i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $0 i32.const 0 i32.store offset=16 - local.get $3 + local.get $0 i32.const 0 i32.store offset=20 - local.get $3 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $3 - local.get $3 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $5 i32.add local.set $1 local.get $4 - local.get $0 + local.get $5 i32.sub local.set $0 loop $while-continue|0 @@ -1391,122 +1449,29 @@ end end local.get $2 - ) - (func $issues/1225/normal (result i32) - global.get $issues/1225/x - i32.load - ) - (func $issues/1225/viaThis (result i32) - global.get $issues/1225/x - i32.load offset=4 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/1225/X - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 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 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/itcms/__new - local.tee $0 + local.get $3 i32.store - local.get $0 + local.get $3 i32.const 4 i32.store offset=8 - local.get $0 + local.get $3 i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 0 i32.store offset=4 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.load offset=8 i32.store offset=4 - local.get $0 + local.get $3 i32.const 4 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 global.set $issues/1225/x global.get $issues/1225/x i32.load @@ -1538,12 +1503,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0 + loop $while-continue|00 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0 + br $while-continue|00 end end end @@ -1568,6 +1533,38 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1225/X + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + call $start:issues/1225 + ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -1576,19 +1573,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1598,22 +1595,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17908 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1627,7 +1624,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1639,7 +1636,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1647,15 +1644,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1663,7 +1660,7 @@ else i32.const 1488 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1673,7 +1670,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -1691,25 +1688,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 659db3d84d..efa79642c3 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1,9 +1,9 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -194,19 +194,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -818,38 +816,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18140 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -865,221 +936,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18140 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18140 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18140 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18140 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + if + i32.const 0 + i32.const 1488 + i32.const 559 + 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 + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1451,11 +1447,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1466,19 +1462,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1486,7 +1483,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1497,16 +1494,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1517,16 +1514,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1534,7 +1531,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1542,8 +1539,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1560,7 +1557,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1570,13 +1567,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1589,40 +1586,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1652,8 +1649,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2369,337 +2366,334 @@ i32.store8 end ) - (func $~lib/rt/itcms/__renew (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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $2 - local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $1 - local.get $2 i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $4 - local.get $1 - local.get $2 - i32.load offset=16 - local.tee $2 local.get $1 - local.get $2 - i32.lt_u - select - local.set $5 - block $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.tee $1 - local.get $0 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 + i32.le_u + if local.get $1 - i32.sub - local.get $5 - i32.sub i32.const 0 - local.get $5 - i32.const 1 - i32.shl - i32.sub - i32.le_u + i32.lt_s if - local.get $1 - local.get $0 - local.get $5 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + i32.const 1344 + i32.const 1104 + i32.const 123 + i32.const 22 + call $~lib/builtins/abort + unreachable end - local.get $0 local.get $1 + i32.const 1 + i32.add + local.tee $3 + local.get $0 + i32.load offset=8 + local.tee $9 + i32.const 2 + i32.shr_u i32.gt_u if - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq + local.get $3 + i32.const 268435455 + i32.gt_u if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 - end - end + i32.const 1056 + i32.const 1104 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable end - loop $while-continue|2 - local.get $5 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $9 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1073741820 + local.get $4 + i32.const 1073741820 + i32.lt_u + select + local.tee $4 + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $11 + local.get $0 + i32.load + local.tee $10 + local.tee $3 + 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 $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 + local.get $4 + local.get $11 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $11 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $5 + local.get $11 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $4 + local.get $11 + i32.gt_u + select + local.set $8 + block $~lib/util/memory/memmove|inlined.0 local.get $5 - i32.const 1 + local.tee $4 + local.get $3 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + local.get $4 i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $5 - i32.add - i32.const 7 - i32.and + local.get $8 + i32.sub + i32.const 0 + local.get $8 + i32.const 1 + i32.shl + i32.sub + i32.le_u if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 + local.get $4 + local.get $3 + local.get $8 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u + local.get $3 + local.get $4 + i32.gt_u if - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i64.load - i64.store - br $while-continue|4 + local.get $3 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $4 + i32.const 7 + i32.and + if + local.get $8 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $3 + local.tee $7 + i32.const 1 + i32.add + local.set $3 + local.get $6 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $8 + i32.const 8 + i32.ge_u + if + local.get $4 + local.get $3 + i64.load + i64.store + local.get $8 + i32.const 8 + i32.sub + local.set $8 + local.get $4 + i32.const 8 + i32.add + local.set $4 + local.get $3 + i32.const 8 + i32.add + local.set $3 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $8 + if + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $3 + local.tee $7 + i32.const 1 + i32.add + local.set $3 + local.get $6 + local.get $7 + i32.load8_u + i32.store8 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + br $while-continue|2 + end + end + else + local.get $3 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $4 + local.get $8 + i32.add + i32.const 7 + i32.and + if + local.get $8 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $8 + i32.const 1 + i32.sub + local.tee $8 + local.get $4 + i32.add + local.get $3 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $8 + i32.const 8 + i32.ge_u + if + local.get $8 + i32.const 8 + i32.sub + local.tee $8 + local.get $4 + i32.add + local.get $3 + local.get $8 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $8 + if + local.get $8 + i32.const 1 + i32.sub + local.tee $8 + local.get $4 + i32.add + local.get $3 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end end - end - loop $while-continue|5 local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $4 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 123 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $4 - local.tee $7 - local.get $0 - local.tee $3 - i32.load offset=8 - local.tee $5 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $7 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable + local.set $3 end local.get $3 - i32.load - local.tee $6 - local.get $5 - i32.const 1 - i32.shl - local.tee $8 - i32.const 1073741820 - local.get $8 - i32.const 1073741820 - i32.lt_u - select - local.tee $8 - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $7 - local.get $7 - local.get $8 - i32.lt_u - select - local.tee $7 - call $~lib/rt/itcms/__renew - local.tee $8 - local.get $5 + local.get $9 i32.add - local.get $7 - local.get $5 + local.get $11 + local.get $9 i32.sub call $~lib/memory/memory.fill - local.get $6 - local.get $8 + local.get $3 + local.get $10 i32.ne if + local.get $0 local.get $3 - local.get $8 i32.store + local.get $0 local.get $3 - local.get $8 i32.store offset=4 - local.get $8 + local.get $3 if + local.get $0 local.get $3 - local.get $8 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end - local.get $3 - local.get $7 + local.get $0 + local.get $11 i32.store offset=8 end local.get $0 - local.get $4 + local.get $1 + i32.const 1 + i32.add i32.store offset=12 end local.get $0 @@ -2718,258 +2712,6 @@ call $byn-split-outlined-A$~lib/rt/itcms/__link end ) - (func $start:issues/1699 - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - i32.const 16 - i32.shl - i32.const 18140 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - i32.const 32 - call $~lib/memory/memory.fill - local.get $3 - local.get $4 - i32.store - local.get $4 - if - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 294 - 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 32 - i32.store offset=8 - local.get $3 - i32.const 3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $3 - i32.store - call $issues/1699/MultiAssignmentTest#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 1 - local.get $1 - call $~lib/array/Array#__set - local.get $3 - i32.const 1 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/array/Array#__set - loop $for-loop|0 - local.get $3 - i32.load offset=12 - local.get $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - call $issues/1699/MultiAssignmentTest#constructor - local.tee $1 - i32.store offset=12 - local.get $0 - i32.const 1 - i32.gt_s - if - local.get $3 - local.get $0 - local.get $1 - call $~lib/array/Array#__set - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $3 - i32.const 0 - call $~lib/array/Array#__get - local.get $3 - i32.const 1 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1680 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 2 - call $~lib/array/Array#__get - local.get $3 - i32.const 1 - call $~lib/array/Array#__get - i32.eq - if - i32.const 0 - i32.const 1680 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 18160 - i32.const 18208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) @@ -3041,7 +2783,213 @@ unreachable ) (func $~start - call $start:issues/1699 + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $__inlined_func$start:issues/1699 + memory.size + i32.const 16 + i32.shl + i32.const 18140 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 32 + call $~lib/memory/memory.fill + local.get $2 + local.get $3 + i32.store + local.get $3 + if + local.get $2 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + i32.const 32 + i32.store offset=8 + local.get $2 + i32.const 3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.store + call $issues/1699/MultiAssignmentTest#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + i32.const 1 + local.get $0 + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $0 + call $~lib/array/Array#__set + loop $for-loop|0 + local.get $2 + i32.load offset=12 + local.get $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + call $issues/1699/MultiAssignmentTest#constructor + local.tee $0 + i32.store offset=12 + local.get $1 + i32.const 1 + i32.gt_s + if + local.get $2 + local.get $1 + local.get $0 + call $~lib/array/Array#__set + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + i32.const 1680 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.eq + if + i32.const 0 + i32.const 1680 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:issues/1699 + end + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $issues/1699/MultiAssignmentTest#constructor (result i32) (local $0 i32) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index ccb97ded3c..61a435064f 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -674,38 +674,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17908 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -721,221 +794,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17908 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17908 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1440 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1167,7 +1165,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1204,13 +1202,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1244,16 +1242,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1306,7 +1304,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1321,7 +1319,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1344,8 +1342,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1358,11 +1356,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1377,7 +1375,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1389,7 +1387,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1409,19 +1407,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1431,22 +1429,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17908 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1460,7 +1458,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1472,7 +1470,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1480,15 +1478,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1496,7 +1494,7 @@ else i32.const 1488 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1296 @@ -1506,7 +1504,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -1524,25 +1522,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 9c90698515..4f8758408a 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -678,38 +678,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18060 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -725,221 +798,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18060 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18060 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18060 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18060 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1037,13 +1035,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1134,17 +1132,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1153,19 +1151,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1195,8 +1193,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1262,11 +1260,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s @@ -1420,10 +1418,9 @@ call $managed-cast/Cat#constructor local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -1435,20 +1432,20 @@ local.tee $1 i64.const 0 i64.store - local.get $0 - i32.eqz - if - i32.const 1456 - i32.const 1520 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.store offset=4 - block $__inlined_func$~lib/rt/__instanceof14 (result i32) + block $__inlined_func$~lib/rt/__instanceof15 (result i32) + local.get $0 + i32.eqz + if + i32.const 1456 + i32.const 1520 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.store offset=4 local.get $0 i32.const 20 i32.sub @@ -1458,12 +1455,12 @@ i32.load i32.le_u if - loop $do-loop|015 + loop $do-loop|017 i32.const 1 local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof14 + br_if $__inlined_func$~lib/rt/__instanceof15 drop local.get $1 i32.const 3 @@ -1472,7 +1469,7 @@ i32.add i32.load offset=4 local.tee $1 - br_if $do-loop|015 + br_if $do-loop|017 end end i32.const 0 @@ -1497,10 +1494,9 @@ call $managed-cast/Cat#constructor local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1512,7 +1508,7 @@ local.tee $2 i32.const 0 i32.store - block $__inlined_func$~lib/rt/__instanceof18 (result i32) + block $__inlined_func$~lib/rt/__instanceof19 (result i32) local.get $0 i32.const 20 i32.sub @@ -1522,12 +1518,12 @@ i32.load i32.le_u if - loop $do-loop|019 + loop $do-loop|021 i32.const 1 local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof18 + br_if $__inlined_func$~lib/rt/__instanceof19 drop local.get $1 i32.const 3 @@ -1536,7 +1532,7 @@ i32.add i32.load offset=4 local.tee $1 - br_if $do-loop|019 + br_if $do-loop|021 end end i32.const 0 @@ -1560,10 +1556,9 @@ call $managed-cast/Cat#constructor local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1577,7 +1572,7 @@ i32.store local.get $0 if - block $__inlined_func$~lib/rt/__instanceof22 (result i32) + block $__inlined_func$~lib/rt/__instanceof24 (result i32) local.get $0 i32.const 20 i32.sub @@ -1587,12 +1582,12 @@ i32.load i32.le_u if - loop $do-loop|023 + loop $do-loop|026 i32.const 1 local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof22 + br_if $__inlined_func$~lib/rt/__instanceof24 drop local.get $1 i32.const 3 @@ -1601,7 +1596,7 @@ i32.add i32.load offset=4 local.tee $1 - br_if $do-loop|023 + br_if $do-loop|026 end end i32.const 0 @@ -1676,11 +1671,12 @@ ) (func $managed-cast/Cat#constructor (result i32) (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s @@ -1695,7 +1691,7 @@ local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1719,6 +1715,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1743,19 +1740,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1765,22 +1762,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 18060 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1794,7 +1791,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1806,7 +1803,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1814,15 +1811,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1830,7 +1827,7 @@ else i32.const 1632 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1840,7 +1837,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1636 @@ -1858,25 +1855,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index bc6f9e6232..4d3a04ae76 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -714,38 +714,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17884 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -761,221 +834,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17884 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17884 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17884 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17884 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1073,13 +1071,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1170,17 +1168,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1189,19 +1187,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1231,8 +1229,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1542,19 +1540,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1564,22 +1562,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17884 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1593,7 +1591,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1605,7 +1603,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1613,15 +1611,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1629,7 +1627,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1639,7 +1637,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1657,25 +1655,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index cdae122257..9ab69d4538 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -721,38 +721,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 21068 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -768,221 +841,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 21068 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 21068 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 21068 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 21068 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1178,11 +1176,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $4 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $2 + local.tee $1 i32.const 1073741820 i32.gt_u if @@ -1193,15 +1191,16 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $2 + local.get $1 i32.const 12 i32.le_u select @@ -1379,8 +1378,8 @@ i32.load offset=8 local.set $3 local.get $1 - local.get $2 global.get $~lib/rt/itcms/white + local.get $2 i32.or i32.store offset=4 local.get $1 @@ -1694,25 +1693,25 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/util/number/itoa32 (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 4684 - i32.lt_s - if - i32.const 21088 - i32.const 21136 - i32.const 1 - i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + if + i32.const 21088 + i32.const 21136 + 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 local.get $0 i32.eqz if @@ -1721,6 +1720,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 + local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -1733,7 +1733,6 @@ i32.shr_u local.tee $2 select - local.tee $0 local.tee $1 i32.const 100000 i32.lt_u @@ -1786,15 +1785,15 @@ i32.const 1 i32.shl call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 local.get $0 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut local.get $2 if - local.get $1 + local.get $0 i32.const 45 i32.store16 end @@ -1802,13 +1801,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 end + 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) local.get $0 local.get $1 i32.eq @@ -1843,47 +1843,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1894,17 +1894,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1917,14 +1916,16 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (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 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) (local $8 i32) (local $9 i64) (local $10 i32) @@ -1948,12 +1949,11 @@ i64.sub local.tee $12 i64.and - local.set $6 + local.set $7 local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $2 local.tee $5 i32.const 100000 i32.lt_u @@ -2000,9 +2000,9 @@ i32.add end end - local.set $8 + local.set $2 loop $while-continue|0 - local.get $8 + local.get $2 i32.const 0 i32.gt_s if @@ -2018,137 +2018,137 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + 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 $2 + local.get $5 i32.const 1000000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 - local.set $5 + local.get $5 + local.set $6 i32.const 0 - local.set $2 + local.set $5 br $break|1 end i32.const 0 - local.set $5 + local.set $6 end local.get $4 - local.get $5 + local.get $6 i32.or if local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.const 3456 i32.add - local.get $5 + local.get $6 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 - local.get $6 - local.get $2 + local.set $2 + local.get $7 + local.get $5 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -2158,11 +2158,11 @@ local.get $3 i64.le_u if - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $2 i32.const 2 i32.shl i32.const 4384 @@ -2177,9 +2177,9 @@ i32.shl i32.const 3454 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|3 local.get $0 local.get $9 @@ -2197,11 +2197,11 @@ local.get $0 local.get $1 i64.add - local.tee $6 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $6 + local.get $7 local.get $9 i64.lt_u i32.or @@ -2209,10 +2209,10 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $1 i64.add @@ -2220,8 +2220,8 @@ br $while-continue|3 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2234,7 +2234,7 @@ i64.const 10 i64.mul local.set $3 - local.get $6 + local.get $7 i64.const 10 i64.mul local.tee $0 @@ -2249,11 +2249,11 @@ i64.ne if local.get $4 - local.tee $2 + local.tee $5 i32.const 1 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 3456 @@ -2266,26 +2266,26 @@ i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 + local.set $2 local.get $3 local.get $0 local.get $12 i64.and - local.tee $6 + local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $6 + local.get $7 local.set $0 i32.const 0 - local.get $8 + local.get $2 i32.sub i32.const 2 i32.shl @@ -2300,9 +2300,9 @@ i32.shl i32.const 3454 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|6 local.get $0 local.get $1 @@ -2320,22 +2320,22 @@ local.get $0 local.get $11 i64.add - local.tee $6 + local.tee $7 local.get $1 i64.sub i64.gt_u local.get $1 - local.get $6 + local.get $7 i64.gt_u i32.or else i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $11 i64.add @@ -2343,8 +2343,8 @@ br $while-continue|6 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -3573,11 +3573,11 @@ ) (func $start:number (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i32) + (local $5 f64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3663,36 +3663,51 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $2 + local.tee $3 i64.const 4294967295 i64.and - local.tee $1 + local.tee $4 + i64.const 31 + i64.shl + local.set $2 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 i64.const 31 i64.shl - local.set $3 local.get $2 i64.const 32 i64.shr_u - local.tee $2 + i64.add + local.get $2 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $3 i64.const 31 i64.shl - local.get $1 + local.get $4 i64.const 31 i64.shl - local.get $1 + local.get $4 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $2 i64.const 4294967295 i64.and - local.get $2 + local.get $3 i64.const 10 i64.shl i64.add @@ -3703,47 +3718,31 @@ i64.add i64.const 1 i64.sub - local.set $4 - local.get $2 - i64.const 31 - i64.shl - local.get $3 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $4 + local.tee $2 global.get $~lib/util/number/_exp_pow i32.const 2 i32.add - local.get $4 local.get $2 + local.get $3 i64.const 2147483647 i64.mul - local.get $1 + local.get $4 i64.const 2147483647 i64.mul - local.get $1 + local.get $4 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $2 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $3 i64.const 4294966784 i64.mul - local.get $1 + local.get $2 i64.const 4294967295 i64.and i64.add @@ -3764,9 +3763,9 @@ global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store - local.get $5 + local.get $1 i32.const 3456 local.get $0 call $~lib/memory/memory.copy @@ -3776,12 +3775,12 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $5 + local.get $1 i32.store local.get $0 i32.const 4448 i32.store offset=4 - local.get $5 + local.get $1 i32.const 4448 call $~lib/string/String.__eq i32.eqz @@ -3795,15 +3794,15 @@ end i32.const 3 call $~lib/number/I32#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $5 + local.get $0 i32.const 4480 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4480 call $~lib/string/String.__eq i32.eqz @@ -3817,15 +3816,15 @@ end i32.const -5 call $~lib/number/I32#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $5 + local.get $0 i32.const 4512 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4512 call $~lib/string/String.__eq i32.eqz @@ -3839,15 +3838,15 @@ end i32.const 4 call $~lib/number/I32#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $5 + local.get $0 i32.const 4544 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4544 call $~lib/string/String.__eq i32.eqz @@ -3865,15 +3864,15 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $5 + local.get $0 i32.const 4576 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4576 call $~lib/string/String.__eq i32.eqz @@ -3891,15 +3890,15 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $5 + local.get $0 i32.const 3232 i32.store offset=4 - local.get $0 + local.get $1 i32.const 3232 call $~lib/string/String.__eq i32.eqz @@ -3956,15 +3955,15 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $5 + local.get $0 i32.const 3232 i32.store offset=4 - local.get $0 + local.get $1 i32.const 3232 call $~lib/string/String.__eq i32.eqz @@ -3983,15 +3982,15 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $5 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $5 + local.get $0 i32.const 4576 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4576 call $~lib/string/String.__eq i32.eqz @@ -4024,19 +4023,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -4046,22 +4045,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 21068 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -4075,7 +4074,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -4087,7 +4086,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -4095,15 +4094,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -4111,7 +4110,7 @@ else i32.const 4656 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1472 @@ -4121,7 +4120,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 4660 @@ -4139,25 +4138,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 53b247c212..735ea92ee8 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,11 +1,11 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -151,19 +151,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -181,61 +179,6 @@ local.get $0 i32.store offset=8 ) - (func $object-literal/Managed#set:baz (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - local.get $1 - if - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - 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/itcms/visitRoots (local $0 i32) (local $1 i32) @@ -925,38 +868,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18156 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -972,177 +988,102 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18156 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1104 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18156 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 1104 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 18156 - 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 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1274,7 +1215,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -1286,6 +1226,7 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -1395,7 +1336,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -1409,17 +1350,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -1430,19 +1371,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store @@ -1543,8 +1484,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1754,6 +1695,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1788,47 +1730,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1839,17 +1781,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1862,7 +1803,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) @@ -2649,15 +2592,19 @@ (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -2707,7 +2654,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -2736,7 +2683,10 @@ i32.store local.get $1 i32.const 1056 - call $object-literal/Managed#set:baz + i32.store offset=4 + local.get $1 + i32.const 1056 + call $byn-split-outlined-A$~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.tee $0 local.get $1 @@ -2748,7 +2698,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -2799,185 +2749,455 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $0 + local.tee $6 i32.const 0 i32.store - local.get $0 + local.get $6 i32.const 0 i32.store offset=4 - local.get $0 + local.get $6 i32.const 123 i32.store global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 1056 i32.store local.get $0 - call $~lib/string/String#substring - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load - i32.const 123 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.store - local.get $1 - i32.const 1600 - i32.store offset=4 - local.get $2 - i32.const 1600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 65 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - f32.const 0 - f32.store offset=24 - local.get $0 - f64.const 0 - f64.store offset=32 - local.get $0 - i32.const 0 - i32.store8 offset=40 - local.get $0 - i32.const 0 - i32.store8 offset=41 - local.get $0 i32.const 0 - i32.store16 offset=42 - local.get $0 - i32.const 0 - i32.store16 offset=44 - local.get $0 - i32.const 0 - i32.store offset=48 - local.get $0 - i32.const 0 - i32.store offset=52 - local.get $0 - f64.const 0 - f64.store offset=56 - local.get $0 - i32.const 0 - i32.store8 offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 5 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 local.get $0 + i32.const 5 + i32.gt_u + select + local.tee $1 + local.get $1 i32.const 0 - i32.store + i32.gt_s + select + i32.const 1 + i32.shl + local.set $2 + block $__inlined_func$~lib/string/String#substring + i32.const 0 + local.get $1 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $1 + local.get $2 + i32.sub + local.tee $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1568 + local.set $4 + br $__inlined_func$~lib/string/String#substring + end + i32.const 0 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.eq + local.get $2 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $4 + br $__inlined_func$~lib/string/String#substring + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $0 + local.get $2 + i32.const 1056 + i32.add + local.tee $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $5 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + i32.add + local.get $1 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $6 + local.get $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 1772 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $6 + i32.load + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $6 + i32.load offset=4 + local.tee $1 + i32.store local.get $0 + i32.const 1600 + i32.store offset=4 + local.get $1 + i32.const 1600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.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 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 65 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 f32.const 0 f32.store offset=24 - local.get $0 + local.get $1 f64.const 0 f64.store offset=32 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=40 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=41 - local.get $0 + local.get $1 i32.const 0 i32.store16 offset=42 - local.get $0 + local.get $1 i32.const 0 i32.store16 offset=44 - local.get $0 + local.get $1 i32.const 0 i32.store offset=48 - local.get $0 + local.get $1 i32.const 0 i32.store offset=52 - local.get $0 + local.get $1 f64.const 0 f64.store offset=56 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=64 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 i32.store - local.get $0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + f32.const 0 + f32.store offset=24 + local.get $1 + f64.const 0 + f64.store offset=32 + local.get $1 + i32.const 0 + i32.store8 offset=40 + local.get $1 + i32.const 0 + i32.store8 offset=41 + local.get $1 + i32.const 0 + i32.store16 offset=42 + local.get $1 + i32.const 0 + i32.store16 offset=44 + local.get $1 + i32.const 0 + i32.store offset=48 + local.get $1 + i32.const 0 + i32.store offset=52 + local.get $1 + f64.const 0 + f64.store offset=56 + local.get $1 + i32.const 0 + i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.load if i32.const 0 @@ -2987,7 +3207,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 if i32.const 0 @@ -2997,7 +3217,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.load offset=8 i64.eqz i32.eqz @@ -3009,7 +3229,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.load offset=16 i64.eqz i32.eqz @@ -3021,7 +3241,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.load offset=24 f32.const 0 f32.ne @@ -3033,7 +3253,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.load offset=32 f64.const 0 f64.ne @@ -3045,7 +3265,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load8_s offset=40 if i32.const 0 @@ -3055,7 +3275,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load8_u offset=41 if i32.const 0 @@ -3065,7 +3285,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load16_s offset=42 if i32.const 0 @@ -3075,7 +3295,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load16_u offset=44 if i32.const 0 @@ -3085,7 +3305,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=48 if i32.const 0 @@ -3095,7 +3315,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=52 if i32.const 0 @@ -3105,7 +3325,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.load offset=56 f64.const 0 f64.ne @@ -3117,7 +3337,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load8_u offset=64 if i32.const 0 @@ -3129,31 +3349,30 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer @@ -3161,32 +3380,36 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1632 - call $object-literal/Managed#set:baz - local.get $0 + i32.store offset=4 + local.get $1 + i32.const 1632 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + local.get $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -3197,12 +3420,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $1 i32.load offset=4 local.tee $2 i32.store - local.get $1 + local.get $0 i32.const 1632 i32.store offset=4 local.get $2 @@ -3217,7 +3440,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.load offset=8 f64.const 0 f64.ne @@ -3234,90 +3457,89 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $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 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 40 i32.const 6 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1664 i32.store - local.get $0 + local.get $1 i32.const 1664 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 1696 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1696 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 0 i32.store offset=28 - local.get $0 + local.get $1 i32.const 0 i32.store offset=32 - local.get $0 + local.get $1 i32.const -1 i32.store offset=36 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 0 i32.store offset=28 - local.get $0 + local.get $1 i32.const 0 i32.store offset=32 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3326,17 +3548,17 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 local.get $0 + local.get $1 i32.load local.tee $2 i32.store - local.get $1 + local.get $0 i32.const 1664 i32.store offset=4 local.get $2 @@ -3352,12 +3574,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $1 i32.load offset=4 local.tee $2 i32.store - local.get $1 + local.get $0 i32.const 1696 i32.store offset=4 local.get $2 @@ -3373,11 +3595,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=8 - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -3390,11 +3612,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=12 - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -3407,11 +3629,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=16 - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -3424,11 +3646,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=20 - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -3441,11 +3663,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=24 - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -3458,11 +3680,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=28 - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -3474,7 +3696,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=32 if i32.const 0 @@ -3484,7 +3706,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=36 i32.const -1 i32.ne @@ -3506,23 +3728,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|0 + loop $while-continue|017 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0 + br $while-continue|017 end end end call $~lib/rt/itcms/step drop - loop $while-continue|1 + loop $while-continue|118 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|1 + br $while-continue|118 end end global.get $~lib/rt/itcms/total @@ -3548,294 +3770,6 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/string/String#substring (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 18176 - i32.const 18224 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.tee $1 - i32.const 5 - local.get $0 - local.get $0 - i32.const 5 - i32.gt_s - select - local.tee $2 - local.get $1 - local.get $2 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $3 - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $3 - i32.sub - local.tee $5 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1568 - return - end - i32.const 0 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.eq - local.get $3 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - return - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - block $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.tee $0 - local.get $3 - i32.const 1056 - i32.add - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $5 - i32.sub - i32.const 0 - local.get $5 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $5 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $5 - i32.add - i32.const 7 - i32.and - if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $0 - i32.add - local.get $1 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - local.get $0 - i32.add - local.get $1 - local.get $5 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $0 - i32.add - local.get $1 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white local.get $0 @@ -3855,7 +3789,7 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $0 i32.eqz if diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 4568d4669d..99cfd40ab5 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -686,38 +686,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17868 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -733,221 +806,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17868 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17868 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17868 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1045,13 +1043,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1142,17 +1140,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1161,19 +1159,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1203,8 +1201,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1268,11 +1266,11 @@ ) (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1337,10 +1335,9 @@ local.get $0 global.set $optional-typeparameters/tConcrete global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $optional-typeparameters/tConcrete i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1364,10 +1361,9 @@ local.get $0 global.set $optional-typeparameters/tDerived global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $optional-typeparameters/tDerived i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1388,19 +1384,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1410,22 +1406,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17868 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1439,7 +1435,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1451,7 +1447,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1459,15 +1455,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1475,7 +1471,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1485,7 +1481,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1503,25 +1499,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/possibly-null.optimized.wat b/tests/compiler/possibly-null.optimized.wat index 42cc8af75c..0b5ec9002c 100644 --- a/tests/compiler/possibly-null.optimized.wat +++ b/tests/compiler/possibly-null.optimized.wat @@ -1,20 +1,20 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17408)) (memory $0 0) (export "memory" (memory $0)) (export "testTrue" (func $export:possibly-null/testTrue)) - (export "testFalseElse" (func $export:possibly-null/testTrue)) - (export "testFalseContinuation" (func $export:possibly-null/testTrue)) + (export "testFalseElse" (func $export:possibly-null/testFalseElse)) + (export "testFalseContinuation" (func $export:possibly-null/testFalseElse)) (export "testNeNull" (func $export:possibly-null/testTrue)) - (export "testEqNullElse" (func $export:possibly-null/testTrue)) - (export "testEqNullContinuation" (func $export:possibly-null/testTrue)) + (export "testEqNullElse" (func $export:possibly-null/testFalseElse)) + (export "testEqNullContinuation" (func $export:possibly-null/testFalseElse)) (export "testNotEqNull" (func $export:possibly-null/testTrue)) - (export "testNotNeNullElse" (func $export:possibly-null/testTrue)) - (export "testNotNeNullContinuation" (func $export:possibly-null/testTrue)) + (export "testNotNeNullElse" (func $export:possibly-null/testFalseElse)) + (export "testNotNeNullContinuation" (func $export:possibly-null/testFalseElse)) (export "testWhile" (func $export:possibly-null/testWhile)) (export "testWhile2" (func $export:possibly-null/testWhile2)) (export "testWhile3" (func $export:possibly-null/testWhile3)) @@ -50,6 +50,35 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $export:possibly-null/testFalseElse (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 17440 + i32.const 17488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$possibly-null/testFalseElse + local.get $0 + i32.eqz + br_if $__inlined_func$possibly-null/testFalseElse + 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 diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index 3c74c1a97d..132b69fd0b 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -763,38 +763,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17916 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -810,221 +883,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17916 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17916 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17916 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17916 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1122,13 +1120,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1219,17 +1217,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1238,19 +1236,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1280,8 +1278,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1311,28 +1309,29 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 @@ -1643,11 +1642,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.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 @@ -1718,19 +1717,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1740,22 +1739,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17916 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1769,7 +1768,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1781,7 +1780,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1789,15 +1788,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1805,7 +1804,7 @@ else i32.const 1488 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1296 @@ -1815,7 +1814,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -1833,25 +1832,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index f96cd48ccd..39a0afc23c 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -725,38 +725,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17956 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -772,221 +845,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17956 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17956 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17956 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17956 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1440 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1084,11 +1082,11 @@ ) (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1572 i32.lt_s @@ -1233,7 +1231,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1270,13 +1268,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1310,16 +1308,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1372,7 +1370,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1387,7 +1385,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1410,8 +1408,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1424,11 +1422,11 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1443,7 +1441,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1459,33 +1457,34 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 4 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 local.get $0 i32.store local.get $0 @@ -1508,19 +1507,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1530,22 +1529,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17956 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1559,7 +1558,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1571,7 +1570,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1579,15 +1578,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1595,7 +1594,7 @@ else i32.const 1536 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1296 @@ -1605,7 +1604,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1540 @@ -1623,25 +1622,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 6d7c35b4f4..7274d46239 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -205,19 +205,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -829,38 +827,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 19732 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -876,221 +947,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 19732 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 19732 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 19732 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 19732 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1286,11 +1282,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1301,15 +1297,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1487,8 +1484,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2491,25 +2488,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/util/number/utoa64 (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 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + if + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 local.get $0 i64.eqz if @@ -2518,6 +2515,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1728 + local.set $2 br $__inlined_func$~lib/util/number/utoa64 end local.get $0 @@ -2527,48 +2525,48 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $2 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 @@ -2579,10 +2577,10 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 local.get $2 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut else @@ -2637,25 +2635,25 @@ i32.add end end - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store loop $while-continue|0 local.get $0 i64.const 100000000 i64.ge_u if - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $3 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add local.get $0 local.get $0 @@ -2666,10 +2664,10 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 10000 i32.rem_u - local.tee $2 + local.tee $4 i32.const 100 i32.div_u i32.const 2 @@ -2677,7 +2675,7 @@ i32.const 1740 i32.add i64.load32_u - local.get $2 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -2689,15 +2687,15 @@ i64.shl i64.or i64.store - local.get $3 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add - local.get $4 + local.get $3 i32.const 10000 i32.div_u local.tee $3 @@ -2723,33 +2721,43 @@ br $while-continue|0 end end - local.get $1 + local.get $2 local.get $0 i32.wrap_i64 - local.get $2 + local.get $1 call $~lib/util/number/utoa32_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 end + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid block $resolve-access/Container - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $resolve-access/Container $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $resolve-access/Container $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -2798,77 +2806,129 @@ i32.const 1376 global.set $~lib/rt/itcms/fromSpace ) - (func $~lib/rt/__newArray (result i32) + (func $resolve-access/arrayAccess (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) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - local.set $5 - i32.const 1056 - local.set $0 - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $6 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - local.tee $1 - i32.const 1056 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - i32.const 1048 - local.get $1 + i32.store + local.get $6 + i32.const 4 i32.sub - i32.const -16 - i32.le_u - if - local.get $1 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 0 + i32.store + i32.const 8 + local.set $7 i32.const 1056 - i32.lt_u - if + local.set $0 + block $~lib/util/memory/memmove|inlined.0 + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $4 + local.tee $1 + i32.const 1056 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + i32.const 1048 local.get $1 - i32.const 7 - i32.and - i32.eqz + i32.sub + i32.const -16 + i32.le_u if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and + local.get $1 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + i32.const 1056 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $7 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $7 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $7 + i32.const 8 + i32.sub + local.set $7 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $7 if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 local.get $1 local.tee $2 i32.const 1 @@ -2883,244 +2943,184 @@ local.get $3 i32.load8_u i32.store8 - br $while-continue|0 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $while-continue|2 end end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if + else + local.get $1 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|3 local.get $1 - local.get $0 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $1 - i32.const 8 + local.get $7 i32.add - local.set $1 - local.get $0 + i32.const 7 + i32.and + if + local.get $7 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $7 + i32.const 1 + i32.sub + local.tee $7 + local.get $1 + i32.add + local.get $7 + i32.const 1056 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $7 i32.const 8 - i32.add - local.set $0 - br $while-continue|1 + i32.ge_u + if + local.get $7 + i32.const 8 + i32.sub + local.tee $7 + local.get $1 + i32.add + local.get $7 + i32.const 1056 + i32.add + i64.load + i64.store + br $while-continue|4 + end end end - end - loop $while-continue|2 - local.get $5 - if - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $1 - local.get $5 - i32.add - i32.const 7 - i32.and + loop $while-continue|5 + local.get $7 if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 + local.get $7 i32.const 1 i32.sub - local.tee $5 + local.tee $7 local.get $1 i32.add - local.get $5 + local.get $7 i32.const 1056 i32.add i32.load8_u i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $5 - i32.const 1056 - i32.add - i64.load - i64.store - br $while-continue|4 + br $while-continue|5 end end end - loop $while-continue|5 - local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $5 - i32.const 1056 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $4 - i32.store - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - local.get $4 - i32.store - local.get $4 - if - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable end - global.get $~lib/rt/itcms/white + local.get $5 local.get $4 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 + i32.store + i32.const 16 i32.const 3 - i32.and - i32.eq + call $~lib/rt/itcms/__new + local.tee $0 + local.get $4 + i32.store + local.get $4 if local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $4 i32.const 20 i32.sub + local.tee $1 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 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 i32.const 3 - i32.eq 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 + i32.eq + local.get $2 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end end - end - local.get $0 - local.get $4 - i32.store offset=4 - local.get $0 - i32.const 8 - i32.store offset=8 - local.get $0 - i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $resolve-access/arrayAccess (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 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/__newArray - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i64.load + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - i64.load - call $~lib/number/U64#toString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $resolve-access/Container#constructor (result i32) (local $0 i32) @@ -3218,23 +3218,23 @@ local.get $0 i64.const 1 i64.store - block $__inlined_func$~lib/util/number/utoa32 (result i32) + local.get $0 + i64.load + i32.wrap_i64 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32 local.get $0 - i64.load - i32.wrap_i64 - 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 3348 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3242,56 +3242,57 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1728 + local.set $1 br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $2 i32.const 1 i32.shl i32.const 1 @@ -3299,19 +3300,19 @@ local.tee $1 i32.store local.get $1 - local.get $2 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 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 return end i32.const 19760 diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 5a2bd3e666..50b36ddc41 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -242,6 +242,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -276,47 +277,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -327,17 +328,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -350,7 +350,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/itcms/visitRoots @@ -1014,38 +1016,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 27676 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1061,221 +1136,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 27676 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1504 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 27676 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 1504 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 27676 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 27676 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 1776 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1776 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1471,11 +1471,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1486,15 +1486,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1672,8 +1673,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1987,25 +1988,25 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/util/number/itoa32 (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 11292 - i32.lt_s - if - i32.const 27696 - i32.const 27744 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - 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 11292 + i32.lt_s + if + i32.const 27696 + i32.const 27744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 local.get $0 i32.eqz if @@ -2014,6 +2015,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1408 + local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -2026,7 +2028,6 @@ i32.shr_u local.tee $2 select - local.tee $0 local.tee $1 i32.const 100000 i32.lt_u @@ -2080,15 +2081,15 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 local.get $0 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut local.get $2 if - local.get $1 + local.get $0 i32.const 45 i32.store16 end @@ -2096,8 +2097,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 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) @@ -2132,9 +2133,7 @@ local.get $0 i64.shr_u i32.wrap_i64 - local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2180,9 +2179,9 @@ i32.add end end - local.set $8 + local.set $2 loop $while-continue|0 - local.get $8 + local.get $2 i32.const 0 i32.gt_s if @@ -2198,137 +2197,137 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + 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 $2 + local.get $5 i32.const 1000000000 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000000 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 100000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000000 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 10000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000000 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 1000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 100000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 10000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 1000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 100 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10 i32.div_u - local.set $5 - local.get $2 + local.set $7 + local.get $5 i32.const 10 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 - local.set $5 + local.get $5 + local.set $7 i32.const 0 - local.set $2 + local.set $5 br $break|1 end i32.const 0 - local.set $5 + local.set $7 end local.get $4 - local.get $5 + local.get $7 i32.or if local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.const 9760 i32.add - local.get $5 + local.get $7 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 + local.set $2 local.get $6 - local.get $2 + local.get $5 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -2338,11 +2337,11 @@ local.get $3 i64.le_u if - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $2 i32.const 2 i32.shl i32.const 10688 @@ -2357,9 +2356,9 @@ i32.shl i32.const 9758 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|3 local.get $0 local.get $9 @@ -2389,10 +2388,10 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $1 i64.add @@ -2400,8 +2399,8 @@ br $while-continue|3 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2429,11 +2428,11 @@ i64.ne if local.get $4 - local.tee $2 + local.tee $5 i32.const 1 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 9760 @@ -2446,10 +2445,10 @@ i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 + local.set $2 local.get $3 local.get $0 local.get $12 @@ -2458,14 +2457,14 @@ i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K local.get $6 local.set $0 i32.const 0 - local.get $8 + local.get $2 i32.sub i32.const 2 i32.shl @@ -2480,9 +2479,9 @@ i32.shl i32.const 9758 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|6 local.get $0 local.get $1 @@ -2512,10 +2511,10 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $11 i64.add @@ -2523,8 +2522,8 @@ br $while-continue|6 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -3404,6 +3403,8 @@ (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 i32.eqz if @@ -3422,17 +3423,17 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 21 i32.le_s local.get $0 - local.get $2 + local.get $3 i32.le_s i32.and if (result i32) loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -3449,26 +3450,26 @@ br $for-loop|0 end end - local.get $2 + local.get $3 i32.const 1 i32.shl i32.const 9760 i32.add i32.const 3145774 i32.store - local.get $2 + local.get $3 i32.const 2 i32.add else - local.get $2 + local.get $3 i32.const 21 i32.le_s - local.get $2 + local.get $3 i32.const 0 i32.gt_s i32.and if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.shl i32.const 9760 @@ -3490,16 +3491,16 @@ i32.const 1 i32.add else - local.get $2 + local.get $3 i32.const 0 i32.le_s - local.get $2 + local.get $3 i32.const -6 i32.gt_s i32.and if (result i32) i32.const 2 - local.get $2 + local.get $3 i32.sub local.tee $2 i32.const 1 @@ -3547,7 +3548,7 @@ i32.const 101 i32.store16 i32.const 9764 - local.get $2 + local.get $3 i32.const 1 i32.sub local.tee $0 @@ -3636,19 +3637,19 @@ local.get $1 i32.const 9760 i32.add - local.tee $3 + local.tee $5 i32.const 101 i32.store16 offset=2 - local.get $3 + local.get $5 i32.const 4 i32.add - local.get $2 + local.get $3 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s - local.tee $2 + local.tee $3 if i32.const 0 local.get $1 @@ -3656,7 +3657,6 @@ local.set $1 end local.get $1 - local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -3702,14 +3702,17 @@ i32.add end end + local.set $4 + local.get $1 + local.get $4 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $5 i32.const 45 i32.const 43 - local.get $2 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -3909,11 +3912,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - 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 11292 i32.lt_s @@ -4861,12 +4864,11 @@ local.get $0 global.set $resolve-binary/foo global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $resolve-binary/foo - local.tee $1 + local.tee $0 i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 10880 @@ -4891,12 +4893,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 10912 @@ -4921,12 +4922,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 10944 @@ -4951,12 +4951,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 10976 @@ -4981,12 +4980,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11008 @@ -5011,12 +5009,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11040 @@ -5041,12 +5038,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11072 @@ -5071,12 +5067,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11104 @@ -5101,12 +5096,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11136 @@ -5131,12 +5125,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11168 @@ -5161,12 +5154,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11200 @@ -5191,12 +5183,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-binary/foo - local.tee $2 + local.tee $1 i32.store offset=12 + local.get $0 local.get $1 - local.get $2 i32.store offset=16 local.get $0 i32.const 11232 @@ -5224,23 +5215,22 @@ call $resolve-binary/Bar#constructor global.set $resolve-binary/bar2 global.get $~lib/memory/__stack_pointer - local.tee $0 local.tee $1 global.get $resolve-binary/bar i32.store offset=4 local.get $1 global.get $resolve-binary/bar2 - local.tee $1 local.tee $2 + local.tee $0 i32.store offset=8 - local.get $2 - global.set $resolve-binary/bar local.get $0 + global.set $resolve-binary/bar + local.get $1 global.get $resolve-binary/bar local.tee $0 i32.store local.get $0 - local.get $1 + local.get $2 i32.ne if i32.const 0 @@ -5315,19 +5305,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -5337,22 +5327,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 27676 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -5366,7 +5356,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -5378,7 +5368,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -5386,15 +5376,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -5402,7 +5392,7 @@ else i32.const 11248 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1632 @@ -5412,7 +5402,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 11252 @@ -5430,25 +5420,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index ea597c6070..dbe6daa73a 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -257,19 +257,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -881,38 +879,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 21236 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -928,221 +999,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 21236 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 21236 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 21236 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 21236 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1504 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1514,11 +1510,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1529,19 +1525,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1549,7 +1546,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1560,16 +1557,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1580,16 +1577,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1597,7 +1594,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1605,8 +1602,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1623,7 +1620,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1633,13 +1630,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1652,40 +1649,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1715,8 +1712,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1799,8 +1796,8 @@ ) (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 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) (local $8 i32) (local $9 i64) (local $10 i32) @@ -1824,12 +1821,11 @@ i64.sub local.tee $12 i64.and - local.set $6 + local.set $7 local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $2 local.tee $5 i32.const 100000 i32.lt_u @@ -1876,9 +1872,9 @@ i32.add end end - local.set $8 + local.set $2 loop $while-continue|0 - local.get $8 + local.get $2 i32.const 0 i32.gt_s if @@ -1894,137 +1890,137 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + 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 $2 + local.get $5 i32.const 1000000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 - local.set $5 + local.get $5 + local.set $6 i32.const 0 - local.set $2 + local.set $5 br $break|1 end i32.const 0 - local.set $5 + local.set $6 end local.get $4 - local.get $5 + local.get $6 i32.or if local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.const 1776 i32.add - local.get $5 + local.get $6 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 - local.get $6 - local.get $2 + local.set $2 + local.get $7 + local.get $5 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -2034,11 +2030,11 @@ local.get $3 i64.le_u if - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $2 i32.const 2 i32.shl i32.const 2704 @@ -2053,9 +2049,9 @@ i32.shl i32.const 1774 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|3 local.get $0 local.get $9 @@ -2073,11 +2069,11 @@ local.get $0 local.get $1 i64.add - local.tee $6 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $6 + local.get $7 local.get $9 i64.lt_u i32.or @@ -2085,10 +2081,10 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $1 i64.add @@ -2096,8 +2092,8 @@ br $while-continue|3 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2110,7 +2106,7 @@ i64.const 10 i64.mul local.set $3 - local.get $6 + local.get $7 i64.const 10 i64.mul local.tee $0 @@ -2125,11 +2121,11 @@ i64.ne if local.get $4 - local.tee $2 + local.tee $5 i32.const 1 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 1776 @@ -2142,26 +2138,26 @@ i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 + local.set $2 local.get $3 local.get $0 local.get $12 i64.and - local.tee $6 + local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $6 + local.get $7 local.set $0 i32.const 0 - local.get $8 + local.get $2 i32.sub i32.const 2 i32.shl @@ -2176,9 +2172,9 @@ i32.shl i32.const 1774 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|6 local.get $0 local.get $1 @@ -2196,22 +2192,22 @@ local.get $0 local.get $11 i64.add - local.tee $6 + local.tee $7 local.get $1 i64.sub i64.gt_u local.get $1 - local.get $6 + local.get $7 i64.gt_u i32.or else i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $11 i64.add @@ -2219,8 +2215,8 @@ br $while-continue|6 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -3811,25 +3807,25 @@ (local $1 f64) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/util/number/dtoa (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 4852 - i32.lt_s - if - i32.const 21264 - i32.const 21312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/dtoa local.get $0 f64.promote_f32 local.tee $1 @@ -3841,6 +3837,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1632 + local.set $2 br $__inlined_func$~lib/util/number/dtoa end local.get $1 @@ -3858,6 +3855,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1664 + local.set $2 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -3870,34 +3868,36 @@ f64.const 0 f64.lt select + local.set $2 br $__inlined_func$~lib/util/number/dtoa end local.get $1 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store - local.get $3 - i32.const 1776 local.get $2 + i32.const 1776 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 end + local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -3932,47 +3932,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -3983,17 +3983,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -4006,7 +4005,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) @@ -4051,29 +4052,29 @@ (func $~lib/number/U8#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block $__inlined_func$~lib/util/number/utoa32 (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 4852 - i32.lt_s - if - i32.const 21264 - i32.const 21312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa32 local.get $0 i32.const 255 i32.and - local.tee $2 + local.tee $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4081,56 +4082,57 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3536 + local.set $0 br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 @@ -4138,15 +4140,15 @@ local.tee $0 i32.store local.get $0 - local.get $2 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 - local.get $0 end + local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -4189,11 +4191,11 @@ (func $start:resolve-elementaccess (local $0 i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 4852 i32.lt_s diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 9b6256d256..805e1477e1 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -714,38 +714,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 19844 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -761,221 +834,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 19844 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1520 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 19844 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 19844 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 19844 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 1792 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1792 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1171,11 +1169,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $4 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $2 + local.tee $1 i32.const 1073741820 i32.gt_u if @@ -1186,15 +1184,16 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $2 + local.get $1 i32.const 12 i32.le_u select @@ -1372,8 +1371,8 @@ i32.load offset=8 local.set $3 local.get $1 - local.get $2 global.get $~lib/rt/itcms/white + local.get $2 i32.or i32.store offset=4 local.get $1 @@ -1621,6 +1620,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1693,239 +1693,242 @@ i32.store i32.const 1744 global.set $~lib/rt/itcms/fromSpace - i32.const 0 - i32.const 1200 - i32.load - call_indirect $0 (type $i32_=>_i32) - local.set $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 3460 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1424 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end + block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $3 - select - local.tee $1 + i32.const 1200 + i32.load + call_indirect $0 (type $i32_=>_i32) local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3460 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 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.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1424 + local.set $3 + br $__inlined_func$~lib/util/number/itoa32 end - else + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 local.get $0 - i32.const 10000000 + i32.const 31 + i32.shr_u + local.tee $2 + select + local.tee $0 + i32.const 100000 i32.lt_u if (result i32) local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + 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 1000000000 - i32.ge_u - i32.const 8 - i32.add + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $2 + i32.add + local.tee $1 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + loop $while-continue|0 local.get $0 - i32.const 100000000 + i32.const 10000 i32.ge_u - i32.add + 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 $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end end - end - local.get $3 - i32.add - local.tee $2 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - loop $while-continue|0 - local.get $1 - i32.const 10000 + local.get $0 + i32.const 100 i32.ge_u if local.get $1 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $2 - i32.const 4 + i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $3 i32.add - local.get $4 + local.get $0 i32.const 100 - i32.div_u + i32.rem_u i32.const 2 i32.shl i32.const 1836 i32.add - i64.load32_u - local.get $4 + i32.load + i32.store + local.get $0 i32.const 100 - i32.rem_u + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + local.get $3 + i32.add + local.get $0 i32.const 2 i32.shl i32.const 1836 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.load + i32.store + else + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $3 + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1836 - 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 $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - else local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 48 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.store16 - end - local.get $3 - if - local.get $0 - i32.const 45 - i32.store16 + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 3408 - i32.store offset=4 - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 + local.tee $0 + local.get $3 + i32.store local.get $0 i32.const 3408 + i32.store offset=4 + i32.const 3408 + local.set $2 + i32.const 1 + local.get $3 + i32.const 3408 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $0 + i32.const 3408 + i32.const 0 + local.get $3 + select i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $0 i32.const 3404 i32.load i32.const 1 @@ -1933,79 +1936,76 @@ i32.ne br_if $__inlined_func$~lib/string/String.__eq drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - i32.const 3408 - local.set $3 - local.get $0 - local.tee $1 - i32.const 7 - i32.and - i32.eqz - local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $1 - i64.load + local.get $3 + i32.const 7 + i32.and + i32.eqz + local.get $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $3 + i64.load + local.get $2 + i64.load + i64.eq + if 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 8 + i32.add + local.set $3 + local.get $2 + i32.const 8 + i32.add + local.set $2 + 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 loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $1 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $1 if - local.get $1 - i32.load16_u - local.tee $2 local.get $3 i32.load16_u local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $1 - i32.const 2 - i32.add + local.get $2 + i32.load16_u + local.tee $5 + i32.sub local.set $1 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl local.get $3 i32.const 2 i32.add local.set $3 + local.get $2 + i32.const 2 + i32.add + local.set $2 br $while-continue|1 end end i32.const 0 + local.set $1 end + local.get $1 i32.eqz end i32.eqz @@ -2038,19 +2038,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -2060,22 +2060,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 19844 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -2089,7 +2089,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -2101,7 +2101,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -2109,15 +2109,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -2125,7 +2125,7 @@ else i32.const 3424 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1648 @@ -2135,7 +2135,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3428 @@ -2153,25 +2153,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index fe058cc0aa..0312391376 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -683,38 +683,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17876 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -730,221 +803,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17876 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17876 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17876 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17876 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1042,13 +1040,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1139,17 +1137,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1158,19 +1156,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1200,8 +1198,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1302,11 +1300,11 @@ ) (func $export:resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1492 i32.lt_s @@ -1355,11 +1353,11 @@ ) (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1492 i32.lt_s @@ -1525,19 +1523,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1547,22 +1545,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17876 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1576,7 +1574,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1588,7 +1586,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1596,15 +1594,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1612,7 +1610,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1622,7 +1620,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1640,25 +1638,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index 8cc979a005..c452094e26 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -679,38 +679,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17860 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -726,221 +799,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17860 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17860 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17860 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17860 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1114,7 +1112,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1151,13 +1149,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1191,16 +1189,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1253,7 +1251,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1268,7 +1266,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1291,8 +1289,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1305,11 +1303,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1324,7 +1322,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1336,7 +1334,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1356,19 +1354,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1378,22 +1376,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17860 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1407,7 +1405,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1419,7 +1417,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1427,15 +1425,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1443,7 +1441,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1453,7 +1451,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1471,25 +1469,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index d6680565ff..f214cfaec0 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -714,38 +714,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 20100 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -761,221 +834,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 20100 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20100 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 20100 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 20100 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1616 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1171,11 +1169,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1186,15 +1184,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1372,8 +1371,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1584,25 +1583,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/util/number/itoa32 (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 3716 - i32.lt_s - if - i32.const 20128 - i32.const 20176 - i32.const 1 - i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3716 + i32.lt_s + if + i32.const 20128 + i32.const 20176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 local.get $0 i32.eqz if @@ -1611,6 +1610,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 + local.set $1 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -1621,63 +1621,62 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $2 + local.tee $3 select local.tee $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.get $2 + local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.store loop $while-continue|0 local.get $0 @@ -1687,20 +1686,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $3 + local.set $4 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add - local.get $3 + local.get $4 i32.const 100 i32.div_u i32.const 2 @@ -1708,7 +1707,7 @@ i32.const 1660 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -1727,13 +1726,13 @@ i32.const 100 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 100 @@ -1753,12 +1752,12 @@ i32.const 10 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 2 @@ -1768,21 +1767,21 @@ i32.load i32.store else - local.get $1 + local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $2 + local.get $3 if - local.get $4 + local.get $1 i32.const 45 i32.store16 end @@ -1790,13 +1789,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 end + local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1831,47 +1831,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1882,17 +1882,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1905,7 +1904,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1943,11 +1944,11 @@ (func $start:resolve-propertyaccess (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 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 3716 i32.lt_s @@ -2212,7 +2213,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2221,16 +2221,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 6 i32.store global.get $~lib/memory/__stack_pointer @@ -2238,16 +2238,16 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.load call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=4 local.get $0 @@ -2305,19 +2305,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -2327,22 +2327,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 20100 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -2356,7 +2356,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -2368,7 +2368,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -2376,15 +2376,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -2392,7 +2392,7 @@ else i32.const 3680 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1472 @@ -2402,7 +2402,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3684 @@ -2420,25 +2420,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 7ae264bda3..19d10e82ea 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -718,38 +718,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 21028 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -765,221 +838,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 21028 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 21028 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 21028 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 21028 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1616 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1175,11 +1173,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $4 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $2 + local.tee $1 i32.const 1073741820 i32.gt_u if @@ -1190,15 +1188,16 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $2 + local.get $1 i32.const 12 i32.le_u select @@ -1376,8 +1375,8 @@ i32.load offset=8 local.set $3 local.get $1 - local.get $2 global.get $~lib/rt/itcms/white + local.get $2 i32.or i32.store offset=4 local.get $1 @@ -1691,6 +1690,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1725,47 +1725,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - 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 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + 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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1776,17 +1776,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1799,14 +1798,16 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (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 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) (local $8 i32) (local $9 i64) (local $10 i32) @@ -1830,12 +1831,11 @@ i64.sub local.tee $12 i64.and - local.set $6 + local.set $7 local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $2 local.tee $5 i32.const 100000 i32.lt_u @@ -1882,9 +1882,9 @@ i32.add end end - local.set $8 + local.set $2 loop $while-continue|0 - local.get $8 + local.get $2 i32.const 0 i32.gt_s if @@ -1900,137 +1900,137 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + 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 $2 + local.get $5 i32.const 1000000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 - local.set $5 + local.get $5 + local.set $6 i32.const 0 - local.set $2 + local.set $5 br $break|1 end i32.const 0 - local.set $5 + local.set $6 end local.get $4 - local.get $5 + local.get $6 i32.or if local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.const 3472 i32.add - local.get $5 + local.get $6 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 - local.get $6 - local.get $2 + local.set $2 + local.get $7 + local.get $5 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -2040,11 +2040,11 @@ local.get $3 i64.le_u if - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $2 i32.const 2 i32.shl i32.const 4400 @@ -2059,9 +2059,9 @@ i32.shl i32.const 3470 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|3 local.get $0 local.get $9 @@ -2079,11 +2079,11 @@ local.get $0 local.get $1 i64.add - local.tee $6 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $6 + local.get $7 local.get $9 i64.lt_u i32.or @@ -2091,10 +2091,10 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $1 i64.add @@ -2102,8 +2102,8 @@ br $while-continue|3 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -2116,7 +2116,7 @@ i64.const 10 i64.mul local.set $3 - local.get $6 + local.get $7 i64.const 10 i64.mul local.tee $0 @@ -2131,11 +2131,11 @@ i64.ne if local.get $4 - local.tee $2 + local.tee $5 i32.const 1 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 3472 @@ -2148,26 +2148,26 @@ i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 + local.set $2 local.get $3 local.get $0 local.get $12 i64.and - local.tee $6 + local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $6 + local.get $7 local.set $0 i32.const 0 - local.get $8 + local.get $2 i32.sub i32.const 2 i32.shl @@ -2182,9 +2182,9 @@ i32.shl i32.const 3470 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|6 local.get $0 local.get $1 @@ -2202,22 +2202,22 @@ local.get $0 local.get $11 i64.add - local.tee $6 + local.tee $7 local.get $1 i64.sub i64.gt_u local.get $1 - local.get $6 + local.get $7 i64.gt_u i32.or else i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $11 i64.add @@ -2225,8 +2225,8 @@ br $while-continue|6 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -3466,313 +3466,313 @@ if local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - local.get $0 - i32.load offset=4 - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - 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 4644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 21028 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/pinSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 - i32.store - i32.const 1576 - i32.const 1568 - i32.store - i32.const 1568 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - 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.tee $2 - local.get $0 - i32.store - local.get $2 - i32.const 3232 - i32.store offset=4 - local.get $0 - i32.const 3232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 3264 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.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 $3 - i64.const 4294967295 - i64.and - local.tee $1 - 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 $1 - i64.const 31 - i64.shl - local.get $1 - 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 1 - i32.add - local.get $5 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 2147483647 - i64.mul - local.get $1 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $1 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $1 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - i32.const 1 - i32.shl - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 3472 - local.get $0 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + end + return + end local.get $0 - i32.const 4464 - i32.store offset=4 - local.get $2 - i32.const 4464 - call $~lib/string/String.__eq - i32.eqz + i32.load offset=4 + local.tee $0 if - i32.const 0 - i32.const 3264 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - i32.const 1 - i32.const 4496 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 3264 - i32.const 24 + return + end + unreachable + ) + (func $~start + (local $0 i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 f64) + block $folding-inner1 + 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 4644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 21028 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 4560 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 4 - i32.ne - if + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4644 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 3264 - i32.const 35 + i32.store + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 4528 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 3 - i32.ne - if + 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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 3264 - i32.const 43 + i32.store + i32.const -4 + global.set $~lib/util/number/_K + i32.const 3880 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 4312 + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $3 + i64.const 31 + i64.shl + local.set $1 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.const 31 + i64.shl + local.get $1 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $2 + i64.const 31 + i64.shl + local.get $3 + i64.const 31 + i64.shl + local.get $3 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.tee $1 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + i64.const 4294967295 + i64.and + local.get $2 + i64.const 10 + i64.shl + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $1 + global.get $~lib/util/number/_exp_pow i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.get $1 + 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 $1 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + i64.const 4294966784 + i64.mul + local.get $1 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + call $~lib/util/number/genDigits + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + i32.const 1 + i32.shl + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + i32.const 3472 + local.get $0 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $4 + i32.store + local.get $0 + i32.const 4464 + i32.store offset=4 + local.get $4 + i32.const 4464 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4496 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4560 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4528 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 21056 i32.const 21104 @@ -3789,19 +3789,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -3811,22 +3811,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 21028 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -3840,7 +3840,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -3852,7 +3852,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -3860,15 +3860,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -3876,7 +3876,7 @@ else i32.const 4608 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1472 @@ -3886,7 +3886,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 4612 @@ -3904,25 +3904,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 894b816720..8ae190069c 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -734,38 +734,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 20156 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -781,221 +854,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 20156 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20156 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 20156 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 20156 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1616 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1191,11 +1189,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1206,15 +1204,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1392,8 +1391,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1604,25 +1603,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/util/number/itoa32 (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 3772 - i32.lt_s - if - i32.const 20176 - i32.const 20224 - i32.const 1 - i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3772 + i32.lt_s + if + i32.const 20176 + i32.const 20224 + 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 local.get $0 i32.eqz if @@ -1631,6 +1630,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 + local.set $1 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -1641,63 +1641,62 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $2 + local.tee $3 select local.tee $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.get $2 + local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.store loop $while-continue|0 local.get $0 @@ -1707,20 +1706,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $3 + local.set $4 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add - local.get $3 + local.get $4 i32.const 100 i32.div_u i32.const 2 @@ -1728,7 +1727,7 @@ i32.const 1660 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -1747,13 +1746,13 @@ i32.const 100 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 100 @@ -1773,12 +1772,12 @@ i32.const 10 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 2 @@ -1788,21 +1787,21 @@ i32.load i32.store else - local.get $1 + local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $2 + local.get $3 if - local.get $4 + local.get $1 i32.const 45 i32.store16 end @@ -1810,13 +1809,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 end + local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -1851,47 +1851,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -1902,17 +1902,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -1925,7 +1924,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1966,12 +1967,11 @@ (func $start:resolve-unary (local $0 i32) (local $1 i32) - (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - 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 3772 i32.lt_s @@ -2262,16 +2262,15 @@ local.get $0 global.set $resolve-unary/foo global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $resolve-unary/foo i32.store offset=12 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 3488 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 3488 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 3488 i32.store offset=4 i32.const 3488 @@ -2472,16 +2471,15 @@ local.get $0 global.set $resolve-unary/bar global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $resolve-unary/bar i32.store offset=12 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 3616 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 3616 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 3616 i32.store offset=4 i32.const 3616 @@ -2523,12 +2521,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-unary/bar - local.tee $2 + local.tee $1 i32.store + local.get $0 local.get $1 - local.get $2 i32.store offset=12 local.get $0 i32.const 3680 @@ -2553,12 +2550,11 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.tee $1 global.get $resolve-unary/bar - local.tee $2 + local.tee $1 i32.store + local.get $0 local.get $1 - local.get $2 i32.store offset=12 local.get $0 i32.const 3712 @@ -2602,19 +2598,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -2624,22 +2620,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 20156 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -2653,7 +2649,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -2665,7 +2661,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -2673,15 +2669,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -2689,7 +2685,7 @@ else i32.const 3728 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1472 @@ -2699,7 +2695,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3732 @@ -2717,25 +2713,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/return.optimized.wat b/tests/compiler/return.optimized.wat index 646c3e3cd5..64eb14b70d 100644 --- a/tests/compiler/return.optimized.wat +++ b/tests/compiler/return.optimized.wat @@ -71,10 +71,6 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store - block $__inlined_func$return/testVoidReturnFunction - local.get $0 - br_if $__inlined_func$return/testVoidReturnFunction - end local.get $1 i32.load call_indirect $0 (type $none_=>_none) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index d4af2b697a..5cb5d51b6d 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -677,38 +677,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17908 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -724,236 +797,161 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17908 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - 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 1120 - i32.const 228 - i32.const 20 + i32.const 1392 + i32.const 6 + i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $rt/finalize/ran local.get $0 + i32.const 4 + i32.add + local.tee $0 i32.const 17908 - i32.lt_u + 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 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.set $2 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 15 + i32.and i32.const 1 - global.set $rt/finalize/ran local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1440 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1066,7 +1064,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1103,13 +1101,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1143,16 +1141,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1205,7 +1203,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1220,7 +1218,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1243,8 +1241,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1257,11 +1255,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1276,7 +1274,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1288,7 +1286,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1390,19 +1388,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1412,22 +1410,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17908 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1441,7 +1439,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1453,7 +1451,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1461,15 +1459,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1477,7 +1475,7 @@ else i32.const 1488 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1487,7 +1485,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -1505,25 +1503,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index b76a919feb..f4a5f7a597 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -717,38 +717,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17940 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -764,221 +837,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17940 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17940 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17940 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17940 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1076,13 +1074,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1173,17 +1171,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1192,19 +1190,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1234,8 +1232,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1387,7 +1385,7 @@ i32.load i32.le_u if - loop $do-loop|01 + loop $do-loop|02 i32.const 1 local.get $0 i32.const 5 @@ -1401,7 +1399,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|01 + br_if $do-loop|02 end end i32.const 0 @@ -1423,7 +1421,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof2 (result i32) + block $__inlined_func$~lib/rt/__instanceof3 (result i32) local.get $0 i32.const 20 i32.sub @@ -1433,12 +1431,12 @@ i32.load i32.le_u if - loop $do-loop|03 + loop $do-loop|05 i32.const 1 local.get $0 i32.const 4 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof2 + br_if $__inlined_func$~lib/rt/__instanceof3 drop local.get $0 i32.const 3 @@ -1447,7 +1445,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|03 + br_if $do-loop|05 end end i32.const 0 @@ -1470,7 +1468,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof4 (result i32) + block $__inlined_func$~lib/rt/__instanceof6 (result i32) local.get $0 i32.const 20 i32.sub @@ -1480,12 +1478,12 @@ i32.load i32.le_u if - loop $do-loop|05 + loop $do-loop|08 i32.const 1 local.get $0 i32.const 5 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof4 + br_if $__inlined_func$~lib/rt/__instanceof6 drop local.get $0 i32.const 3 @@ -1494,7 +1492,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|05 + br_if $do-loop|08 end end i32.const 0 @@ -1516,7 +1514,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof6 (result i32) + block $__inlined_func$~lib/rt/__instanceof9 (result i32) local.get $0 i32.const 20 i32.sub @@ -1526,12 +1524,12 @@ i32.load i32.le_u if - loop $do-loop|07 + loop $do-loop|011 i32.const 1 local.get $0 i32.const 4 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof6 + br_if $__inlined_func$~lib/rt/__instanceof9 drop local.get $0 i32.const 3 @@ -1540,7 +1538,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|07 + br_if $do-loop|011 end end i32.const 0 @@ -1563,7 +1561,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof8 (result i32) + block $__inlined_func$~lib/rt/__instanceof12 (result i32) local.get $0 i32.const 20 i32.sub @@ -1573,12 +1571,12 @@ i32.load i32.le_u if - loop $do-loop|09 + loop $do-loop|014 i32.const 1 local.get $0 i32.const 5 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof8 + br_if $__inlined_func$~lib/rt/__instanceof12 drop local.get $0 i32.const 3 @@ -1587,7 +1585,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|09 + br_if $do-loop|014 end end i32.const 0 @@ -1628,7 +1626,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof10 (result i32) + block $__inlined_func$~lib/rt/__instanceof15 (result i32) local.get $0 i32.const 20 i32.sub @@ -1638,12 +1636,12 @@ i32.load i32.le_u if - loop $do-loop|011 + loop $do-loop|017 i32.const 1 local.get $0 i32.const 4 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof10 + br_if $__inlined_func$~lib/rt/__instanceof15 drop local.get $0 i32.const 3 @@ -1652,7 +1650,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|011 + br_if $do-loop|017 end end i32.const 0 @@ -1674,7 +1672,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof12 (result i32) + block $__inlined_func$~lib/rt/__instanceof18 (result i32) local.get $0 i32.const 20 i32.sub @@ -1684,12 +1682,12 @@ i32.load i32.le_u if - loop $do-loop|013 + loop $do-loop|020 i32.const 1 local.get $0 i32.const 5 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof12 + br_if $__inlined_func$~lib/rt/__instanceof18 drop local.get $0 i32.const 3 @@ -1698,7 +1696,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|013 + br_if $do-loop|020 end end i32.const 0 @@ -1730,7 +1728,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof14 (result i32) + block $__inlined_func$~lib/rt/__instanceof21 (result i32) local.get $0 i32.const 20 i32.sub @@ -1740,12 +1738,12 @@ i32.load i32.le_u if - loop $do-loop|015 + loop $do-loop|023 i32.const 1 local.get $0 i32.const 4 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof14 + br_if $__inlined_func$~lib/rt/__instanceof21 drop local.get $0 i32.const 3 @@ -1754,7 +1752,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|015 + br_if $do-loop|023 end end i32.const 0 @@ -1777,7 +1775,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof16 (result i32) + block $__inlined_func$~lib/rt/__instanceof24 (result i32) local.get $0 i32.const 20 i32.sub @@ -1787,12 +1785,12 @@ i32.load i32.le_u if - loop $do-loop|017 + loop $do-loop|026 i32.const 1 local.get $0 i32.const 5 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof16 + br_if $__inlined_func$~lib/rt/__instanceof24 drop local.get $0 i32.const 3 @@ -1801,7 +1799,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|017 + br_if $do-loop|026 end end i32.const 0 @@ -1833,7 +1831,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof18 (result i32) + block $__inlined_func$~lib/rt/__instanceof27 (result i32) local.get $0 i32.const 20 i32.sub @@ -1843,12 +1841,12 @@ i32.load i32.le_u if - loop $do-loop|019 + loop $do-loop|029 i32.const 1 local.get $0 i32.const 4 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof18 + br_if $__inlined_func$~lib/rt/__instanceof27 drop local.get $0 i32.const 3 @@ -1857,7 +1855,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|019 + br_if $do-loop|029 end end i32.const 0 @@ -1880,7 +1878,7 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~lib/rt/__instanceof20 (result i32) + block $__inlined_func$~lib/rt/__instanceof30 (result i32) local.get $0 i32.const 20 i32.sub @@ -1890,12 +1888,12 @@ i32.load i32.le_u if - loop $do-loop|021 + loop $do-loop|032 i32.const 1 local.get $0 i32.const 5 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof20 + br_if $__inlined_func$~lib/rt/__instanceof30 drop local.get $0 i32.const 3 @@ -1904,7 +1902,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|021 + br_if $do-loop|032 end end i32.const 0 @@ -2107,19 +2105,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -2129,22 +2127,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17940 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -2158,7 +2156,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -2170,7 +2168,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -2178,15 +2176,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -2194,7 +2192,7 @@ else i32.const 1504 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -2204,7 +2202,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1508 @@ -2222,25 +2220,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index 36f878bfc5..9973399dfc 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -168,10 +168,10 @@ local.get $0 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $1 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -179,7 +179,7 @@ else i32.const 1568 i32.load - local.get $2 + local.get $1 i32.lt_u if i32.const 1248 @@ -189,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1572 @@ -198,33 +198,31 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 - local.get $1 + local.get $2 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 - local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 ) @@ -822,38 +820,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17980 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17980 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -869,221 +940,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - i32.const 17980 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17980 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17980 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17980 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17980 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1279,11 +1275,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1294,15 +1290,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1480,8 +1477,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1777,8 +1774,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index e36f1bfcb7..36c97bacdc 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -772,11 +772,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -787,19 +787,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -807,7 +808,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -818,16 +819,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -838,16 +839,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -855,7 +856,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -863,8 +864,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -881,7 +882,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -891,13 +892,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -910,40 +911,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -973,8 +974,8 @@ i32.load offset=8 local.set $1 local.get $2 - local.get $0 global.get $~lib/rt/tcms/white + local.get $0 i32.or i32.store offset=4 local.get $2 @@ -1138,8 +1139,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/tcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1435,9 +1436,9 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/tcms/white i32.eqz + local.get $0 i32.or i32.store offset=4 local.get $1 diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.optimized.wat index 2c7bfa46b4..3992ea9b47 100644 --- a/tests/compiler/rt/runtime-stub-export.optimized.wat +++ b/tests/compiler/rt/runtime-stub-export.optimized.wat @@ -66,9 +66,9 @@ i32.sub local.tee $4 i32.add - local.tee $6 - memory.size local.tee $5 + memory.size + local.tee $6 i32.const 16 i32.shl i32.const 15 @@ -78,8 +78,8 @@ local.tee $7 i32.gt_u if - local.get $5 local.get $6 + local.get $5 local.get $7 i32.sub i32.const 65535 @@ -89,7 +89,7 @@ i32.const 16 i32.shr_u local.tee $7 - local.get $5 + local.get $6 local.get $7 i32.gt_s select @@ -106,7 +106,7 @@ end end end - local.get $6 + local.get $5 global.set $~lib/rt/stub/offset local.get $3 local.get $4 diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index 0dd19d9487..ef10ca6f24 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -1721,7 +1721,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -1733,6 +1732,7 @@ call $~lib/wasi/index/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -1842,7 +1842,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -1856,17 +1856,17 @@ call $~lib/wasi/index/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -1877,19 +1877,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store @@ -1983,14 +1983,14 @@ end local.get $1 i32.load16_u offset=6 - local.tee $3 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=4 - local.tee $2 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 @@ -2020,11 +2020,11 @@ i32.shl local.get $6 i32.or - local.get $2 + local.get $3 i32.const 16 i32.shl i32.or - local.get $3 + local.get $2 i32.const 24 i32.shl i32.or @@ -2049,28 +2049,29 @@ end return end - i32.const 0 - local.set $3 + local.get $1 local.get $1 local.tee $2 - local.get $2 + local.tee $3 i32.const 20 i32.sub i32.load offset=16 i32.add local.set $5 + i32.const 0 + local.set $1 loop $while-continue|0 - local.get $2 + local.get $3 local.get $5 i32.lt_u if - local.get $2 + local.get $3 i32.load16_u local.tee $6 i32.const 128 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1 i32.add else @@ -2078,7 +2079,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 2 i32.add else @@ -2088,63 +2089,61 @@ i32.const 55296 i32.eq local.get $5 - local.get $2 + local.get $3 i32.const 2 i32.add i32.gt_u i32.and if - local.get $2 + local.get $3 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $3 + local.get $1 i32.const 4 i32.add - local.set $3 - local.get $2 + local.set $1 + local.get $3 i32.const 4 i32.add - local.set $2 + local.set $3 br $while-continue|0 end end - local.get $3 + local.get $1 i32.const 3 i32.add end end - local.set $3 - local.get $2 + local.set $1 + local.get $3 i32.const 2 i32.add - local.set $2 + local.set $3 br $while-continue|0 end end - local.get $3 - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $2 + local.get $1 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $2 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $4 local.get $2 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $4 local.get $3 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $1 i32.ne if i32.const 0 @@ -2155,10 +2154,10 @@ unreachable end i32.const 1136 - local.get $2 + local.get $3 i32.store i32.const 1140 - local.get $3 + local.get $1 i32.store local.get $0 i32.const 1136 @@ -2166,7 +2165,7 @@ i32.const 1144 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2346,19 +2345,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -2380,38 +2377,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 24356 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -2427,177 +2497,102 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 24356 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 4992 + i32.const 228 + i32.const 20 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 24356 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 4992 - i32.const 228 - i32.const 20 - call $~lib/wasi/index/abort - unreachable - end + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 24356 - 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 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -2851,26 +2846,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 - local.get $3 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -3142,7 +3137,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -3158,7 +3153,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 24 @@ -3168,18 +3163,18 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.load local.tee $8 i32.store offset=8 @@ -3187,7 +3182,7 @@ local.get $8 i32.store local.get $2 - local.get $5 + local.get $4 i64.load offset=8 i64.store offset=8 local.get $2 @@ -3197,7 +3192,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 i32.load @@ -3210,20 +3205,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 24 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -3361,25 +3356,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/util/number/utoa64 (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 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - 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 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 local.get $0 i64.eqz if @@ -3388,6 +3383,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 6000 + local.set $2 br $__inlined_func$~lib/util/number/utoa64 end local.get $0 @@ -3397,48 +3393,48 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $2 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 @@ -3449,10 +3445,10 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 local.get $2 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut else @@ -3507,25 +3503,25 @@ i32.add end end - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store loop $while-continue|0 local.get $0 i64.const 100000000 i64.ge_u if - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $3 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add local.get $0 local.get $0 @@ -3536,10 +3532,10 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 10000 i32.rem_u - local.tee $2 + local.tee $4 i32.const 100 i32.div_u i32.const 2 @@ -3547,7 +3543,7 @@ i32.const 6012 i32.add i64.load32_u - local.get $2 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -3559,15 +3555,15 @@ i64.shl i64.or i64.store - local.get $3 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add - local.get $4 + local.get $3 i32.const 10000 i32.div_u local.tee $3 @@ -3593,18 +3589,18 @@ br $while-continue|0 end end - local.get $1 + local.get $2 local.get $0 i32.wrap_i64 - local.get $2 + local.get $1 call $~lib/util/number/utoa32_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 end + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -3647,13 +3643,13 @@ i32.mul local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 local.tee $0 i32.add - local.set $1 + local.set $3 loop $while-continue|0 local.get $0 - local.get $1 + local.get $3 i32.lt_u if local.get $0 @@ -3664,9 +3660,9 @@ if local.get $0 i32.load - local.tee $2 + local.tee $1 if - local.get $2 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__visit end end @@ -3677,9 +3673,9 @@ br $while-continue|0 end end - local.get $3 + local.get $2 if - local.get $3 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__visit end return @@ -3689,17 +3685,17 @@ (func $~start (local $0 i32) (local $1 i32) + global.get $~started + if + return + end + i32.const 1 + global.set $~started + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~started - if - return - end - i32.const 1 - global.set $~started - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 7972 i32.lt_s @@ -3920,7 +3916,8 @@ if local.get $0 local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 i32.const 3 @@ -3934,7 +3931,8 @@ if local.get $0 local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 i32.const 4 @@ -4101,6 +4099,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4141,36 +4140,35 @@ if (result i32) i32.const 0 else - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $4 - i32.store block $__inlined_func$~lib/string/String.__eq (result i32) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $2 + i32.store i32.const 1 - local.get $4 local.get $1 - local.tee $2 + local.get $2 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + local.get $1 i32.const 0 - local.get $4 + local.get $2 select i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $4 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u local.tee $0 - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4179,79 +4177,81 @@ i32.ne br_if $__inlined_func$~lib/string/String.__eq drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $4 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $4 - i64.load + local.get $2 + i32.const 7 + i32.and + local.get $1 + local.tee $3 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $3 + i64.load + i64.eq + if local.get $2 - i64.load - i64.eq - if - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $2 - i32.const 8 - i32.add - local.set $2 - 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 8 + i32.add + local.set $2 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 end end + end + block $__inlined_func$~lib/util/string/compareImpl loop $while-continue|1 local.get $0 - local.tee $3 + local.tee $4 i32.const 1 i32.sub local.set $0 - local.get $3 + local.get $4 if - local.get $4 - i32.load16_u - local.tee $3 local.get $2 i32.load16_u + local.tee $8 + local.get $3 + i32.load16_u local.tee $7 - i32.ne - if - local.get $3 - local.get $7 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $4 - i32.const 2 - i32.add + i32.sub local.set $4 + local.get $7 + local.get $8 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add local.set $2 + local.get $3 + i32.const 2 + i32.add + local.set $3 br $while-continue|1 end end i32.const 0 + local.set $4 end + local.get $4 i32.eqz end end @@ -4282,11 +4282,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 7972 i32.lt_s @@ -4833,53 +4833,4 @@ end end ) - (func $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4992 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/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 - ) ) diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index b9bced5e12..4c09233d1f 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -821,19 +821,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -1495,38 +1493,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 23284 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1542,177 +1613,102 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 23284 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 23284 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/wasi/index/abort - unreachable - end + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 23284 - 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 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1844,7 +1840,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -1856,6 +1851,7 @@ call $~lib/wasi/index/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -1965,7 +1961,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -1979,17 +1975,17 @@ call $~lib/wasi/index/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -2000,19 +1996,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store @@ -2285,26 +2281,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 - local.get $3 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -2772,7 +2768,6 @@ end ) (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 @@ -2789,62 +2784,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 255 i32.and - local.tee $1 - local.tee $2 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $1 - local.get $2 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $0 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3727,44 +3720,47 @@ (local $5 i32) (local $6 i32) block $folding-inner1 - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 4848 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner0 - local.get $6 + block $__inlined_func$~lib/util/string/joinIntegerArray + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4848 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $5 i32.eqz if block $__inlined_func$~lib/util/number/utoa32 (result i32) - local.get $5 + local.get $3 i32.load8_u - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3776,7 +3772,7 @@ 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 @@ -3787,47 +3783,47 @@ br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $2 i32.const 100000000 i32.ge_u i32.add @@ -3838,152 +3834,150 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 local.get $0 + local.get $2 local.get $1 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 end local.set $0 - br $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.const 6652 i32.load i32.const 1 i32.shr_u - local.tee $0 + local.tee $4 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store loop $for-loop|0 - local.get $2 + local.get $5 local.get $6 - i32.lt_s + i32.gt_s if local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add - local.get $2 - local.get $5 + local.get $3 + local.get $6 i32.add i32.load8_u call $~lib/util/number/itoa_buffered local.get $1 i32.add local.set $1 - local.get $0 + local.get $4 if local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.const 6656 - local.get $0 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 local.get $1 + local.get $4 i32.add local.set $1 end - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|0 end end - local.get $3 + local.get $2 local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add + local.get $3 local.get $5 - local.get $6 i32.add i32.load8_u call $~lib/util/number/itoa_buffered local.get $1 i32.add - local.tee $0 + local.tee $1 i32.gt_s if - block $__inlined_func$~lib/string/String#substring (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 6900 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 0 - local.get $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 6900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + local.get $1 + local.get $4 + i32.lt_s + select + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $3 + block $__inlined_func$~lib/string/String#substring i32.const 0 - i32.gt_s - select - local.tee $0 local.get $1 - local.get $0 local.get $1 - i32.lt_s - select - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $3 - local.get $2 - local.get $0 - local.get $0 - local.get $2 + i32.const 0 i32.lt_s select i32.const 1 i32.shl - local.tee $0 + local.tee $1 local.get $3 i32.sub local.tee $2 @@ -3994,13 +3988,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 + local.set $0 br $__inlined_func$~lib/string/String#substring end i32.const 0 - local.get $1 + local.get $4 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.eq local.get $3 select @@ -4009,18 +4004,17 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 br $__inlined_func$~lib/string/String#substring end global.get $~lib/memory/__stack_pointer local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 local.get $3 - local.get $4 i32.add local.get $2 call $~lib/memory/memory.copy @@ -4028,25 +4022,23 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + local.set $0 end - local.set $0 - br $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - br $__inlined_func$~lib/util/string/joinIntegerArray end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 + return end - return end i32.const 23312 i32.const 23360 @@ -4059,32 +4051,32 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/string/String#concat (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 6900 - i32.lt_s - if - i32.const 23312 - i32.const 23360 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - 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 6900 + i32.lt_s + if + i32.const 23312 + i32.const 23360 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat i32.const 4764 i32.load i32.const 1 i32.shr_u i32.const 1 i32.shl - local.tee $1 + local.tee $2 local.get $0 i32.const 20 i32.sub @@ -4093,9 +4085,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $2 - i32.add local.tee $3 + i32.add + local.tee $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4103,30 +4095,31 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 + local.set $1 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 - i32.const 4768 local.get $1 + i32.const 4768 + local.get $2 call $~lib/memory/memory.copy local.get $1 - local.get $3 + local.get $2 i32.add local.get $0 - local.get $2 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 end + local.get $1 ) (func $~lib/process/writeString (param $0 i32) (local $1 i32) @@ -4146,26 +4139,26 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load16_u offset=6 - local.tee $1 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=4 - local.tee $2 + local.tee $4 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=2 - local.tee $3 + local.tee $1 i32.const 128 i32.ge_u br_if $break|0 @@ -4180,19 +4173,19 @@ i32.const 6680 i32.store i32.const 6676 - local.get $4 + local.get $2 i32.store i32.const 6680 - local.get $3 + local.get $1 i32.const 8 i32.shl local.get $5 i32.or - local.get $2 + local.get $4 i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 24 i32.shl i32.or @@ -4218,28 +4211,28 @@ return end local.get $0 - local.set $1 - i32.const 0 - local.set $2 local.get $0 + local.tee $1 + local.tee $3 i32.const 20 i32.sub i32.load offset=16 - local.get $0 i32.add - local.set $3 + local.set $4 + i32.const 0 + local.set $0 loop $while-continue|0 - local.get $1 local.get $3 + local.get $4 i32.lt_u if - local.get $1 + local.get $3 i32.load16_u local.tee $5 i32.const 128 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.add else @@ -4247,7 +4240,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 2 i32.add else @@ -4256,64 +4249,62 @@ i32.and i32.const 55296 i32.eq + local.get $4 local.get $3 - local.get $1 i32.const 2 i32.add i32.gt_u i32.and if - local.get $1 + local.get $3 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $2 + local.get $0 i32.const 4 i32.add - local.set $2 - local.get $1 + local.set $0 + local.get $3 i32.const 4 i32.add - local.set $1 + local.set $3 br $while-continue|0 end end - local.get $2 + local.get $0 i32.const 3 i32.add end end - local.set $2 - local.get $1 + local.set $0 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|0 end end - local.get $2 - local.set $1 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 local.get $1 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $2 + local.get $3 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $0 i32.ne if i32.const 0 @@ -4324,10 +4315,10 @@ unreachable end i32.const 6672 - local.get $1 + local.get $3 i32.store i32.const 6676 - local.get $2 + local.get $0 i32.store i32.const 1 i32.const 6672 @@ -4335,7 +4326,7 @@ i32.const 6680 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $1 + local.get $3 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -4469,11 +4460,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - 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 6900 i32.lt_s @@ -4752,13 +4743,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $1 local.get $0 i32.const 20 i32.sub i32.load offset=16 local.tee $3 - local.get $1 - i32.lt_u + i32.gt_u if i32.const 1472 i32.const 1680 @@ -4837,7 +4828,8 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $folding-inner0 + (local $6 i32) + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4845,134 +4837,142 @@ global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $1 + local.tee $3 i32.const 0 i32.store i32.const 0 local.get $0 - local.tee $1 i32.load offset=8 - local.tee $0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $3 - local.get $5 - local.get $0 - local.get $3 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 + local.tee $4 + local.get $4 i32.const 0 i32.gt_s select - local.tee $4 local.set $2 - local.get $5 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 6900 - 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 12 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1168 - i32.const 1216 - i32.const 18 - i32.const 57 - call $~lib/wasi/index/abort - unreachable + local.get $3 + block $__inlined_func$~lib/typedarray/Uint8Array#constructor (result i32) + local.get $4 + local.get $2 + i32.sub + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + local.tee $4 + local.set $5 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 6900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 6900 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + end + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1216 + i32.const 18 + i32.const 57 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $5 + call $~lib/memory/memory.fill + local.get $1 + local.get $6 + i32.store + local.get $6 + if + local.get $1 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $6 + i32.store offset=4 + local.get $1 + local.get $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + br $__inlined_func$~lib/typedarray/Uint8Array#constructor + end + br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.get $5 + local.tee $1 i32.store - local.get $5 - if - local.get $0 - local.get $5 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - local.get $5 - i32.store offset=4 - local.get $0 + local.get $1 + i32.load offset=4 local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 i32.load offset=4 - local.get $3 - local.get $1 - i32.load offset=4 i32.add local.get $4 call $~lib/memory/memory.copy @@ -4980,7 +4980,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 return end i32.const 23312 diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index 497be7955f..dba70f0262 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -1707,7 +1707,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -1719,6 +1718,7 @@ call $~lib/wasi/index/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -1828,7 +1828,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -1842,17 +1842,17 @@ call $~lib/wasi/index/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -1863,19 +1863,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store @@ -1964,26 +1964,26 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load16_u offset=6 - local.tee $1 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=4 - local.tee $2 + local.tee $4 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=2 - local.tee $3 + local.tee $1 i32.const 128 i32.ge_u br_if $break|0 @@ -1998,19 +1998,19 @@ i32.const 1096 i32.store i32.const 1092 - local.get $4 + local.get $2 i32.store i32.const 1096 - local.get $3 + local.get $1 i32.const 8 i32.shl local.get $5 i32.or - local.get $2 + local.get $4 i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 24 i32.shl i32.or @@ -2036,28 +2036,28 @@ return end local.get $0 - local.set $1 - i32.const 0 - local.set $2 local.get $0 + local.tee $1 + local.tee $3 i32.const 20 i32.sub i32.load offset=16 - local.get $0 i32.add - local.set $3 + local.set $4 + i32.const 0 + local.set $0 loop $while-continue|0 - local.get $1 local.get $3 + local.get $4 i32.lt_u if - local.get $1 + local.get $3 i32.load16_u local.tee $5 i32.const 128 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.add else @@ -2065,7 +2065,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 2 i32.add else @@ -2074,64 +2074,62 @@ i32.and i32.const 55296 i32.eq + local.get $4 local.get $3 - local.get $1 i32.const 2 i32.add i32.gt_u i32.and if - local.get $1 + local.get $3 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $2 + local.get $0 i32.const 4 i32.add - local.set $2 - local.get $1 + local.set $0 + local.get $3 i32.const 4 i32.add - local.set $1 + local.set $3 br $while-continue|0 end end - local.get $2 + local.get $0 i32.const 3 i32.add end end - local.set $2 - local.get $1 + local.set $0 + local.get $3 i32.const 2 i32.add - local.set $1 + local.set $3 br $while-continue|0 end end - local.get $2 - local.set $1 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $0 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 local.get $1 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $2 + local.get $3 + call $~lib/string/String.UTF8.encodeUnsafe@varargs + local.get $0 i32.ne if i32.const 0 @@ -2142,10 +2140,10 @@ unreachable end i32.const 1088 - local.get $1 + local.get $3 i32.store i32.const 1092 - local.get $2 + local.get $0 i32.store i32.const 1 i32.const 1088 @@ -2153,7 +2151,7 @@ i32.const 1096 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $1 + local.get $3 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2363,19 +2361,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -2397,38 +2393,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 23788 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -2444,177 +2513,102 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 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 23788 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + 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 - 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 4656 - i32.const 228 - i32.const 20 - call $~lib/wasi/index/abort - unreachable - end - local.get $0 - i32.const 23788 - 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 + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/toSpace - local.tee $0 + 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.store offset=4 - local.get $0 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 4656 + i32.const 228 + i32.const 20 + call $~lib/wasi/index/abort + unreachable + end local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 23788 + 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 + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -2868,26 +2862,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 - local.get $3 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -4495,7 +4489,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|03 + loop $while-continue|01 local.get $0 local.get $2 i32.lt_u @@ -4525,7 +4519,7 @@ i32.const 12 i32.add local.set $0 - br $while-continue|03 + br $while-continue|01 end end local.get $1 @@ -4608,11 +4602,11 @@ i32.shl i32.add i32.load - local.set $0 + local.set $2 loop $while-continue|0 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 local.tee $4 i32.const 1 @@ -4620,12 +4614,12 @@ if (result i32) i32.const 0 else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store block $__inlined_func$~lib/string/String.__eq (result i32) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $3 + i32.store i32.const 1 local.get $1 local.get $3 @@ -4647,7 +4641,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $0 local.get $1 i32.const 20 i32.sub @@ -4660,7 +4654,7 @@ local.get $3 i32.const 0 local.get $1 - local.get $2 + local.get $0 call $~lib/util/string/compareImpl i32.eqz end @@ -4670,13 +4664,13 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 return end local.get $4 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|0 end end @@ -4696,11 +4690,11 @@ (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 16 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s @@ -4729,28 +4723,28 @@ end i32.const 1088 i32.load - local.tee $2 + local.tee $4 i32.const 2 i32.shl local.tee $0 i32.const 1092 i32.load i32.add - local.tee $3 - local.set $4 + local.tee $5 + local.set $1 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $1 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $4 + local.tee $2 local.get $0 - local.get $4 + local.get $2 i32.add call $~lib/bindings/wasi_snapshot_preview1/environ_get local.tee $0 @@ -4766,8 +4760,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4783,75 +4776,76 @@ i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $0 i32.store - local.get $5 + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store - local.get $0 + local.get $6 if - local.get $5 local.get $0 + local.get $6 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $5 + local.get $0 i32.const 3 i32.store offset=4 - local.get $5 + local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store offset=8 - local.get $0 + local.get $6 if - local.get $5 local.get $0 + local.get $6 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $5 + local.get $0 i32.const 4 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $1 + local.get $0 i32.store loop $for-loop|0 - local.get $1 - local.get $2 + local.get $3 + local.get $4 i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load - local.tee $0 - local.get $0 - local.get $3 + local.tee $1 + local.get $1 + local.get $5 i32.add - local.get $4 + local.get $2 i32.sub call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store offset=8 block $__inlined_func$~lib/string/String#indexOf (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=8 i32.const 0 i32.const 5164 i32.load @@ -4878,83 +4872,83 @@ i32.const 0 i32.gt_s select - local.set $0 + local.set $1 local.get $8 local.get $7 i32.sub local.set $8 - loop $for-loop|01 - local.get $0 + loop $for-loop|02 + local.get $1 local.get $8 i32.le_s if - local.get $0 + local.get $1 local.get $6 - local.get $0 + local.get $1 i32.const 5168 local.get $7 call $~lib/util/string/compareImpl i32.eqz br_if $__inlined_func$~lib/string/String#indexOf drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|01 + local.set $1 + br $for-loop|02 end end i32.const -1 end - local.tee $0 + local.tee $1 i32.const -1 i32.xor if local.get $6 i32.const 0 - local.get $0 + local.get $1 call $~lib/string/String#substring local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 i32.store offset=8 local.get $6 - local.get $0 + local.get $1 i32.const 1 i32.add i32.const 2147483647 call $~lib/string/String#substring - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $5 - local.get $7 local.get $0 + local.get $7 + local.get $1 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set else global.get $~lib/memory/__stack_pointer i32.const 5200 i32.store offset=12 - local.get $5 + local.get $0 local.get $6 i32.const 5200 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 br $for-loop|0 end end - local.get $4 + local.get $2 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $0 return end i32.const 23808 @@ -4966,832 +4960,833 @@ ) (func $start:std-wasi/process (local $0 i32) - (local $1 i64) - (local $2 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 7404 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 1056 - i32.store - i32.const 1056 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4448 - i32.store - i32.const 4448 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4480 - i32.store - i32.const 4480 - call $~lib/console/console.log + (local $8 i32) + (local $9 i32) + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store - i32.const 4528 - call $~lib/console/console.log - memory.size - i32.const 16 - i32.shl - i32.const 23788 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 4708 - i32.const 4704 - i32.store - i32.const 4712 - i32.const 4704 - i32.store - i32.const 4704 - global.set $~lib/rt/itcms/pinSpace - i32.const 4740 - i32.const 4736 - i32.store - i32.const 4744 - i32.const 4736 - i32.store - i32.const 4736 - global.set $~lib/rt/itcms/toSpace - i32.const 4884 - i32.const 4880 - i32.store - i32.const 4888 - i32.const 4880 - i32.store - i32.const 4880 - global.set $~lib/rt/itcms/fromSpace - 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 - i32.const 7404 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1088 - i32.const 1092 - call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get - local.tee $3 - i32.const 65535 - i32.and - if - local.get $3 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4224 - i32.const 64 - i32.const 12 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1088 - i32.load - local.tee $3 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1092 - i32.load - i32.add - local.tee $5 - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $6 - local.get $4 - local.get $6 - i32.add - call $~lib/bindings/wasi_snapshot_preview1/args_get - local.tee $4 - i32.const 65535 - i32.and - if - local.get $4 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4224 - i32.const 71 - i32.const 12 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $4 - i32.store - loop $for-loop|0 - local.get $2 - local.get $3 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 7404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 0 + i32.store offset=8 + local.get $5 + i32.const 1056 + i32.store + i32.const 1056 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4448 + i32.store + i32.const 4448 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4480 + i32.store + i32.const 4480 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store + i32.const 4528 + call $~lib/console/console.log + memory.size + i32.const 16 + i32.shl + i32.const 23788 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 4708 + i32.const 4704 + i32.store + i32.const 4712 + i32.const 4704 + i32.store + i32.const 4704 + global.set $~lib/rt/itcms/pinSpace + i32.const 4740 + i32.const 4736 + i32.store + i32.const 4744 + i32.const 4736 + i32.store + i32.const 4736 + global.set $~lib/rt/itcms/toSpace + i32.const 4884 + i32.const 4880 + i32.store + i32.const 4888 + i32.const 4880 + i32.store + i32.const 4880 + 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 7404 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1088 + i32.const 1092 + call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get + local.tee $5 + i32.const 65535 + i32.and if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.get $6 - i32.add - i32.load - local.tee $7 local.get $5 - local.get $7 - i32.add - local.get $6 - i32.sub - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $7 - i32.store offset=4 - local.get $4 - local.get $2 - local.get $7 - call $~lib/array/Array<~lib/string/String>#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4224 + i32.const 64 + i32.const 12 + call $~lib/wasi/index/abort + unreachable end - end - local.get $6 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - global.set $~lib/process/process.argv - global.get $~lib/process/process.argv - global.set $std-wasi/process/argv - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store - i32.const 4928 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/argv - local.tee $2 - i32.store - local.get $2 - i32.load offset=12 - local.set $2 - loop $for-loop|00 - local.get $0 - local.get $2 - i32.lt_s + i32.const 1088 + i32.load + local.tee $5 + i32.const 2 + i32.shl + local.tee $6 + i32.const 1092 + i32.load + i32.add + local.tee $7 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/argv - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/console/console.log - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + call $~lib/rt/tlsf/initialize end - end - call $~lib/process/lazyEnv - global.set $~lib/process/process.env - global.get $~lib/process/process.env - global.set $std-wasi/process/env - global.get $~lib/memory/__stack_pointer - local.tee $3 - global.get $std-wasi/process/env - local.tee $4 - i32.store - i32.const 0 - local.set $2 - i32.const 0 - local.set $0 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7404 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $4 - i32.load offset=8 - local.set $5 - local.get $3 - local.get $4 - i32.load offset=16 - local.tee $3 - call $~lib/array/Array<~lib/string/String>#constructor - local.tee $4 - i32.store - loop $for-loop|01 - local.get $2 - local.get $3 - i32.lt_s + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $8 + local.get $6 + local.get $8 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/args_get + local.tee $6 + i32.const 65535 + i32.and if - local.get $2 + local.get $6 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4224 + i32.const 71 i32.const 12 - i32.mul + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $6 + i32.store + loop $for-loop|0 + local.get $1 local.get $5 - i32.add - local.tee $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 + i32.const 2 + i32.shl + local.get $8 + i32.add i32.load - local.tee $6 + local.tee $9 + local.get $7 + local.get $9 + i32.add + local.get $8 + i32.sub + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $9 i32.store offset=4 - local.get $4 - local.get $0 local.get $6 + local.get $1 + local.get $9 call $~lib/array/Array<~lib/string/String>#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 + br $for-loop|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|01 end - end - local.get $4 - local.get $0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $4 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - global.set $std-wasi/process/envKeys - global.get $~lib/memory/__stack_pointer - i32.const 5232 - i32.store - i32.const 5232 - call $~lib/console/console.log - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/envKeys - local.tee $2 - i32.store - local.get $2 - i32.load offset=12 - local.set $2 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.tee $3 - global.get $std-wasi/process/envKeys - local.tee $4 - i32.store - local.get $3 - local.get $4 - local.get $0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 5280 - i32.store offset=4 - i32.const 5280 - call $~lib/process/writeString - local.get $3 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 5312 - i32.store offset=4 - i32.const 5312 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - global.get $std-wasi/process/env - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $3 + local.get $8 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + global.set $~lib/process/process.argv + global.get $~lib/process/process.argv + global.set $std-wasi/process/argv + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + i32.const 4928 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/argv + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $1 + loop $for-loop|01 + local.get $1 local.get $3 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,~lib/string/String>#find - local.tee $3 - i32.eqz + i32.gt_s if - i32.const 5344 - i32.const 5408 - i32.const 105 - i32.const 17 - call $~lib/wasi/index/abort - unreachable + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/argv + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/console/console.log + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|01 end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $3 - i32.store - local.get $3 - call $~lib/console/console.log - 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 5456 - i32.store - i32.const 5456 - call $~lib/console/console.log - i32.const 0 - i64.const 1000000 - i32.const 1088 - call $~lib/bindings/wasi_snapshot_preview1/clock_time_get - local.tee $0 - i32.const 65535 - i32.and - if - local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4224 - i32.const 51 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1088 - i64.load - i64.const 1000000 - i64.div_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7404 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 + call $~lib/process/lazyEnv + global.set $~lib/process/process.env + global.get $~lib/process/process.env + global.set $std-wasi/process/env + global.get $~lib/memory/__stack_pointer + local.tee $1 + global.get $std-wasi/process/env + local.tee $3 + i32.store local.get $1 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5696 - local.set $0 - br $__inlined_func$~lib/util/number/itoa64 - end + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7404 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 i64.const 0 + i64.store + local.get $3 + i32.load offset=8 + local.set $5 local.get $1 - i64.sub - local.get $1 - local.get $1 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $2 - select - local.tee $1 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.wrap_i64 - local.tee $3 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 + local.get $3 + i32.load offset=16 + local.tee $3 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $6 + i32.store + loop $for-loop|02 local.get $3 local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - 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.gt_s + if + local.get $4 + i32.const 12 + i32.mul + local.get $5 + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.tee $1 + i32.const 1 i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.load + local.tee $7 + i32.store offset=4 + local.get $6 local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add + local.get $7 + call $~lib/array/Array<~lib/string/String>#__set end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|02 end - local.get $2 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + end + local.get $6 + local.get $0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $6 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + global.set $std-wasi/process/envKeys + global.get $~lib/memory/__stack_pointer + i32.const 5232 + i32.store + i32.const 5232 + call $~lib/console/console.log + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/envKeys + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $1 + loop $for-loop|1 local.get $0 local.get $1 - local.get $3 - call $~lib/util/number/utoa64_dec_lut + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.tee $3 + global.get $std-wasi/process/envKeys + local.tee $4 + i32.store + local.get $3 + local.get $4 + local.get $0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5280 + i32.store offset=4 + i32.const 5280 + call $~lib/process/writeString + local.get $3 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 5312 + i32.store offset=4 + i32.const 5312 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/env + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $3 + local.get $3 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,~lib/string/String>#find + local.tee $3 + i32.eqz + if + i32.const 5344 + i32.const 5408 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + call $~lib/console/console.log + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + i32.const 5456 + call $~lib/console/console.log + i32.const 0 + i64.const 1000000 + i32.const 1088 + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.tee $0 + i32.const 65535 + i32.and if local.get $0 - i32.const 45 - i32.store16 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4224 + i32.const 51 + i32.const 14 + call $~lib/wasi/index/abort + unreachable end + i32.const 1088 + i64.load + i64.const 1000000 + i64.div_u + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add + i32.sub global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 7280 - i32.store - i32.const 7280 - call $~lib/console/console.log - i32.const 1 - i64.const 0 - i32.const 1088 - call $~lib/bindings/wasi_snapshot_preview1/clock_time_get - local.tee $0 - i32.const 65535 - i32.and - if - local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4224 - i32.const 57 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1088 - i64.load - 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 7404 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 - local.get $1 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 5696 - local.set $0 - br $__inlined_func$~lib/util/number/utoa64 - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 7404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa64 + local.get $2 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5696 + local.set $1 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $2 + i64.sub + local.get $2 + local.get $2 + i64.const 63 + i64.shr_u i32.wrap_i64 - local.tee $2 local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 + select + local.tee $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + local.tee $3 + local.tee $1 + i32.const 100000 i32.lt_u if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add + 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 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - 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 end - else local.get $0 - i32.const 10000000 - i32.lt_u + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i64.const 1000000000000000 + i64.lt_u if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + 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 $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + local.get $2 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $2 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $2 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end + local.get $0 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + local.get $3 + call $~lib/util/number/utoa64_dec_lut end - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) + if local.get $1 - i64.const 1000000000000 - i64.lt_u + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7280 + i32.store + i32.const 7280 + call $~lib/console/console.log + i32.const 1 + i64.const 0 + i32.const 1088 + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4224 + i32.const 57 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + local.get $2 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5696 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + local.tee $0 + local.tee $1 + i32.const 100000 + i32.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 + 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 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add + 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 - else + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store local.get $1 - i64.const 100000000000000000 + local.get $0 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add + 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 $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add + local.get $2 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $2 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $2 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + local.get $0 + call $~lib/util/number/utoa64_dec_lut end - local.tee $2 - i32.const 1 - i32.shl - 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 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7328 + i32.store + i32.const 7328 + call $~lib/console/console.log + i32.const 42 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $1 + i32.const 1088 + local.get $0 + i32.store + i32.const 1092 + local.get $1 + i32.store + i32.const 0 + i32.const 1088 + i32.const 1 + i32.const 1096 + call $~lib/bindings/wasi_snapshot_preview1/fd_read + local.tee $0 + i32.const 65535 + i32.and + if local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa64_dec_lut + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4224 + i32.const 140 + i32.const 14 + call $~lib/wasi/index/abort + unreachable end + i32.const 1096 + i32.load + drop global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 7328 - i32.store - i32.const 7328 - call $~lib/console/console.log - i32.const 42 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $2 - i32.const 1088 - local.get $0 - i32.store - i32.const 1092 - local.get $2 - i32.store - i32.const 0 - i32.const 1088 - i32.const 1 - i32.const 1096 - call $~lib/bindings/wasi_snapshot_preview1/fd_read - local.tee $0 - i32.const 65535 - i32.and - if - local.get $0 - call $~lib/bindings/wasi_snapshot_preview1/errnoToString - i32.const 4224 - i32.const 140 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - i32.const 1096 - i32.load - drop - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 23808 i32.const 23856 @@ -6262,9 +6257,10 @@ i32.gt_s select local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s + local.get $4 + i32.lt_s select i32.const 1 i32.shl diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index c2e737cf0d..c4daf0c5b8 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -24,96 +24,86 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1292 + i32.load + i32.const 1 + i32.shr_u + local.tee $2 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $1 - drop - i32.const 0 - local.set $2 - local.get $1 - local.get $2 - i32.const 1292 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.add - i32.lt_s + i32.gt_s if i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - i32.const 1296 - local.set $3 - local.get $2 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $2 - i32.const 7 - i32.and - i32.eqz - local.get $1 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 - local.get $2 - i64.load + i32.const 1296 + local.set $3 + local.get $0 + local.tee $1 + i32.const 7 + i32.and + i32.eqz + local.get $2 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + 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 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + 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 loop $while-continue|1 - local.get $1 - local.tee $0 + local.get $0 + local.tee $2 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $2 if - local.get $3 + local.get $1 i32.load16_u local.tee $4 - local.get $2 + local.get $3 i32.load16_u - local.tee $0 + local.tee $5 + i32.sub + local.set $2 + local.get $4 + local.get $5 i32.ne - if - local.get $0 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $2 + br_if $__inlined_func$~lib/util/string/compareImpl + local.get $1 i32.const 2 i32.add - local.set $2 + local.set $1 local.get $3 i32.const 2 i32.add @@ -122,7 +112,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 i32.eqz ) (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) @@ -184,11 +176,11 @@ ) (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.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 @@ -249,11 +241,11 @@ ) (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.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 @@ -305,11 +297,11 @@ ) (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.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 @@ -360,11 +352,11 @@ ) (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.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 @@ -423,11 +415,11 @@ ) (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.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 diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index ef5d2c9f11..bf651869e7 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -278,19 +278,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -902,38 +900,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18252 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -949,221 +1020,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18252 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1536 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18252 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 1536 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18252 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18252 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1744 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1359,11 +1355,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1374,15 +1370,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1560,8 +1557,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1831,16 +1828,26 @@ block $std/array-literal/RefWithCtor block $~lib/array/Array block $std/array-literal/Ref - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index ffd65decf8..4830d40836 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) @@ -18,7 +18,6 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $i64_=>_none (func (param i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i64_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) @@ -892,19 +891,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -1566,38 +1563,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 32036 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1613,177 +1683,102 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 32036 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 32036 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 32036 - 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 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1915,7 +1910,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -1927,6 +1921,7 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -2036,7 +2031,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -2050,17 +2045,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -2071,19 +2066,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store @@ -2371,26 +2366,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 - local.get $3 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -3483,6 +3478,7 @@ (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=8 local.tee $5 @@ -3516,9 +3512,9 @@ local.get $2 i32.shl local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) + block $__inlined_func$~lib/rt/itcms/__renew local.get $3 - if + if (result i32) local.get $5 i32.const 1 i32.shl @@ -3534,13 +3530,15 @@ local.get $2 i32.lt_u select - local.set $1 + else + local.get $1 end - local.get $1 + local.tee $2 local.get $4 + local.tee $1 i32.const 20 i32.sub - local.tee $2 + local.tee $6 i32.load i32.const -4 i32.and @@ -3548,57 +3546,57 @@ i32.sub i32.le_u if + local.get $6 local.get $2 - local.get $1 i32.store offset=16 - local.get $4 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $1 local.get $2 + local.get $6 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $3 - local.get $4 local.get $1 local.get $2 + local.get $6 i32.load offset=16 - local.tee $2 + local.tee $1 local.get $1 local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy local.get $3 + local.set $1 end - local.tee $2 + local.get $1 local.get $5 i32.add i32.const 0 - local.get $1 + local.get $2 local.get $5 i32.sub call $~lib/memory/memory.fill - local.get $2 + local.get $1 local.get $4 i32.ne if local.get $0 - local.get $2 + local.get $1 i32.store local.get $0 - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 if local.get $0 - local.get $2 + local.get $1 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end local.get $0 - local.get $1 + local.get $2 i32.store offset=8 end ) @@ -3952,19 +3950,6 @@ i64.const 8 i64.shl i64.or - local.tee $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr local.set $3 local.get $6 local.get $0 @@ -4001,6 +3986,18 @@ i64.store local.get $6 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 $2 i32.const 8 @@ -4555,65 +4552,6 @@ local.get $1 i32.add ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - (local $1 i64) - (local $2 i32) - i64.const -7046029254386353131 - local.get $0 - 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 $1 - i64.const 33 - i64.shr_u - local.get $1 - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $1 - i64.const 33 - i64.shr_u - local.get $1 - i64.xor - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - local.tee $1 - i64.const 33 - i64.shr_u - local.get $1 - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $1 - i64.const 33 - i64.shr_u - local.get $1 - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $1 - i64.const 33 - i64.shr_u - local.get $1 - i64.xor - global.set $~lib/math/random_state1_64 - local.get $0 - i32.wrap_i64 - i32.const 1831565813 - i32.add - local.set $2 - i32.const 1 - global.set $~lib/math/random_seeded - ) (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) @@ -7998,9 +7936,58 @@ global.get $~lib/math/random_seeded i32.eqz if + i64.const -7046029254386353131 call $~lib/builtins/seed i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom + local.tee $0 + 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 $0 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $0 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $0 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $0 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $0 + i64.const 33 + i64.shr_u + local.get $0 + 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 @@ -8014,9 +8001,9 @@ local.get $1 i64.xor local.tee $1 + local.get $1 i64.const 17 i64.shr_u - local.get $1 i64.xor i64.xor local.get $0 @@ -8095,44 +8082,46 @@ i32.shl local.get $0 i32.add - local.tee $6 - i32.load local.tee $5 + i32.load + local.tee $6 i32.store local.get $3 - local.get $6 + local.get $5 i32.load offset=4 - local.tee $6 + local.tee $3 i32.store offset=4 local.get $6 - local.set $3 + local.set $5 i32.const 2 global.set $~argumentsLength - local.get $5 local.get $6 + local.get $3 local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.le_s - if - local.get $5 - local.set $3 - local.get $6 + if (result i32) + local.get $3 local.set $5 + local.get $6 + else + local.get $3 end + local.set $6 local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $3 loop $while-continue|1 local.get $1 - local.get $6 + local.get $3 i32.le_s if block $while-break|1 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $3 i32.const 2 i32.shl local.get $0 @@ -8150,22 +8139,22 @@ i32.const 0 i32.le_s br_if $while-break|1 - local.get $6 + local.get $3 i32.const 2 i32.shl local.get $0 i32.add local.get $8 i32.store offset=8 - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $6 + local.set $3 br $while-continue|1 end end end - local.get $6 + local.get $3 i32.const 2 i32.shl local.get $0 @@ -8174,12 +8163,12 @@ i32.store offset=8 loop $while-continue|2 local.get $1 - local.get $6 + local.get $3 i32.le_s if block $while-break|2 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $3 i32.const 2 i32.shl local.get $0 @@ -8190,34 +8179,34 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $3 + local.get $6 local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.le_s br_if $while-break|2 - local.get $6 + local.get $3 i32.const 2 i32.shl local.get $0 i32.add local.get $5 i32.store offset=4 - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $6 + local.set $3 br $while-continue|2 end end end - local.get $6 + local.get $3 i32.const 2 i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.store offset=4 local.get $7 i32.const 2 @@ -8253,27 +8242,27 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 + local.get $3 i32.add local.set $7 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if local.get $4 - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 2 i32.shl local.tee $8 @@ -8287,28 +8276,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $7 - local.get $6 + local.get $2 i32.sub i32.const 2 i32.shl local.get $4 i32.add - local.get $6 + local.get $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 i32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -8319,7 +8308,7 @@ if global.get $~lib/memory/__stack_pointer local.tee $7 - local.get $6 + local.get $2 i32.const 2 i32.shl local.get $4 @@ -8328,7 +8317,7 @@ local.tee $8 i32.store local.get $7 - local.get $2 + local.get $6 i32.const 2 i32.shl local.get $4 @@ -8353,10 +8342,10 @@ i32.add local.get $8 i32.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $1 i32.const 2 @@ -8365,10 +8354,10 @@ i32.add local.get $7 i32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -8388,11 +8377,11 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 i64) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) + (local $12 i32) (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -8551,37 +8540,37 @@ local.tee $7 i32.const 1 i32.shl - local.set $8 + local.set $9 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end + local.get $7 global.get $~lib/rt/tlsf/ROOT - local.get $8 + local.get $9 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $9 - local.get $7 + local.tee $11 i32.add local.set $10 loop $for-loop|1 - local.get $5 + local.get $4 local.get $6 i32.lt_u if - local.get $5 + local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $11 i32.add i32.const -1 i32.store - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|1 end end @@ -8597,38 +8586,38 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $9 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $8 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $5 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $8 + local.get $12 i32.const 31 - local.get $8 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $5 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $8 + local.get $12 i32.lt_s if local.get $0 @@ -8636,10 +8625,10 @@ i32.const 1 i32.add local.tee $6 - local.get $8 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $4 local.get $6 i32.sub i32.const 1 @@ -8650,16 +8639,16 @@ if local.get $0 local.get $6 - local.get $8 + local.get $12 local.get $6 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $8 + local.tee $4 + local.get $4 + local.get $12 i32.gt_s select - local.tee $5 + local.tee $4 local.get $7 local.get $2 call $~lib/util/sort/insertionSort @@ -8670,13 +8659,13 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $12 + local.tee $8 i64.div_u - local.get $5 + local.get $4 local.get $6 i32.add i32.const 1 @@ -8684,21 +8673,21 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $7 loop $for-loop|3 - local.get $4 + local.get $5 local.get $7 i32.gt_u if - local.get $4 + local.get $5 i32.const 2 i32.shl - local.get $9 + local.get $11 i32.add i32.load local.tee $13 @@ -8708,7 +8697,7 @@ local.get $0 local.get $13 local.get $10 - local.get $4 + local.get $5 i32.const 2 i32.shl local.tee $3 @@ -8717,53 +8706,53 @@ i32.const 1 i32.add local.get $1 - local.get $11 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $9 + local.get $11 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 br $for-loop|3 end end - local.get $9 + local.get $11 local.get $7 i32.const 2 i32.shl - local.tee $4 + local.tee $5 i32.add local.get $3 i32.store - local.get $4 + local.get $5 local.get $10 i32.add local.get $1 i32.store local.get $6 local.set $3 - local.get $5 + local.get $4 local.set $1 local.get $7 - local.set $4 + local.set $5 br $while-continue|2 end end loop $for-loop|4 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.const 2 i32.shl - local.get $9 + local.get $11 i32.add i32.load local.tee $1 @@ -8772,7 +8761,7 @@ if local.get $0 local.get $1 - local.get $4 + local.get $5 i32.const 2 i32.shl local.get $10 @@ -8780,22 +8769,22 @@ i32.load i32.const 1 i32.add - local.get $8 - local.get $11 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 br $for-loop|4 end end - local.get $11 - call $~lib/rt/tlsf/__free local.get $9 call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -9112,25 +9101,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/string/String#concat (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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat local.get $0 i32.const 20 i32.sub @@ -9139,7 +9128,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -9148,9 +9137,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 - i32.add local.tee $4 + i32.add + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -9158,30 +9147,31 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 + local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 - local.get $0 local.get $2 + local.get $0 + local.get $3 call $~lib/memory/memory.copy local.get $2 - local.get $4 + local.get $3 i32.add local.get $1 - local.get $3 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 end + local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -9381,32 +9371,32 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + local.get $0 + i32.load offset=4 + local.set $6 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=12 - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $7 @@ -9418,14 +9408,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end local.get $7 i32.eqz if - local.get $3 + local.get $6 i32.load call $~lib/util/number/itoa32 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9440,84 +9432,85 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $5 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $5 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $0 i32.store loop $for-loop|0 - local.get $2 + local.get $4 local.get $7 i32.lt_s if - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add - local.get $2 + local.get $4 i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $2 i32.add - local.set $0 - local.get $4 + local.set $2 + local.get $5 if - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 - local.get $4 + local.get $2 + local.get $5 i32.add - local.set $0 + local.set $2 end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|0 end end - local.get $5 - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add local.get $7 i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $2 i32.add - local.tee $0 - i32.gt_s + local.tee $1 + local.get $3 + i32.lt_s if - local.get $6 local.get $0 + local.get $1 call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9528,8 +9521,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 end + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -9603,32 +9596,32 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + local.get $0 + i32.load offset=4 + local.set $6 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=12 - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $7 @@ -9640,14 +9633,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end local.get $7 i32.eqz if - local.get $3 + local.get $6 i32.load call $~lib/util/number/utoa32 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9662,84 +9657,85 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $5 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $5 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $0 i32.store loop $for-loop|0 - local.get $2 + local.get $4 local.get $7 i32.lt_s if - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add - local.get $2 + local.get $4 i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $2 i32.add - local.set $0 - local.get $4 + local.set $2 + local.get $5 if - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 - local.get $4 + local.get $2 + local.get $5 i32.add - local.set $0 + local.set $2 end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|0 end end - local.get $5 - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add local.get $7 i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $2 i32.add - local.tee $0 - i32.gt_s + local.tee $1 + local.get $3 + i32.lt_s if - local.get $6 local.get $0 + local.get $1 call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9750,8 +9746,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 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) @@ -9786,47 +9782,46 @@ i64.shr_u i32.wrap_i64 local.tee $3 - local.tee $6 i32.const 100000 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $6 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $6 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $6 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $6 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $6 + local.get $3 i32.const 100000000 i32.ge_u i32.add @@ -10013,7 +10008,7 @@ i32.add local.tee $0 i32.load16_u - local.set $6 + local.set $9 loop $while-continue|3 local.get $1 local.get $12 @@ -10043,10 +10038,10 @@ i32.const 0 end if - local.get $6 + local.get $9 i32.const 1 i32.sub - local.set $6 + local.set $9 local.get $1 local.get $2 i64.add @@ -10055,7 +10050,7 @@ end end local.get $0 - local.get $6 + local.get $9 i32.store16 local.get $5 return @@ -10137,7 +10132,7 @@ i32.add local.tee $0 i32.load16_u - local.set $6 + local.set $9 loop $while-continue|6 local.get $1 local.get $2 @@ -10167,10 +10162,10 @@ i32.const 0 end if - local.get $6 + local.get $9 i32.const 1 i32.sub - local.set $6 + local.set $9 local.get $1 local.get $13 i64.add @@ -10179,7 +10174,7 @@ end end local.get $0 - local.get $6 + local.get $9 i32.store16 local.get $5 end @@ -10863,36 +10858,36 @@ call $~lib/util/number/dtoa_core ) (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 f64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - block $folding-inner1 - block $__inlined_func$~lib/util/string/joinFloatArray (result i32) - local.get $0 - i32.load offset=4 - local.set $5 + (local $7 f64) + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray local.get $0 - i32.load offset=12 - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub - local.tee $7 + local.tee $6 i32.const 0 i32.lt_s if @@ -10901,192 +10896,194 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 + local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end - block $folding-inner0 - local.get $7 - i32.eqz - if - block $__inlined_func$~lib/util/number/dtoa (result i32) - local.get $5 - f64.load - local.set $1 + local.get $6 + i32.eqz + if + local.get $5 + f64.load + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/dtoa + local.get $7 + f64.const 0 + f64.eq + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - f64.const 0 - f64.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11760 - br $__inlined_func$~lib/util/number/dtoa - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 + i32.const 11760 + local.set $0 + br $__inlined_func$~lib/util/number/dtoa + end + local.get $7 + local.get $7 + f64.sub + f64.const 0 + f64.ne + if + local.get $7 + local.get $7 f64.ne if - local.get $1 - local.get $1 - f64.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11792 - br $__inlined_func$~lib/util/number/dtoa - end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11824 - i32.const 11872 - local.get $1 - f64.const 0 - f64.lt - select + i32.const 11792 + local.set $0 br $__inlined_func$~lib/util/number/dtoa end - i32.const 11904 - local.get $1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 11904 - local.get $0 - call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + i32.const 11824 + i32.const 11872 + local.get $7 + f64.const 0 + f64.lt + select + local.set $0 + br $__inlined_func$~lib/util/number/dtoa end - local.set $0 - br $folding-inner0 + i32.const 11904 + local.get $7 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 11904 + local.get $1 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 11724 - i32.load - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 28 - i32.add - i32.mul - i32.const 28 + i32.const 4 i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - loop $for-loop|0 - local.get $2 - local.get $7 - i32.lt_s + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 11724 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 28 + i32.add + i32.mul + i32.const 28 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 3 + i32.shl + local.get $5 + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $6 - i32.add - local.get $2 - i32.const 3 - i32.shl - local.get $5 - i32.add - f64.load - call $~lib/util/number/dtoa_buffered local.get $0 i32.add - local.set $0 - local.get $3 - if - local.get $0 - i32.const 1 - i32.shl - local.get $6 - i32.add - i32.const 11728 - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $3 - i32.add - local.set $0 - end - local.get $2 + i32.const 11728 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add - local.set $2 - br $for-loop|0 + local.set $1 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $4 - local.get $0 - i32.const 1 - i32.shl - local.get $6 - i32.add - local.get $7 - i32.const 3 - i32.shl - local.get $5 - i32.add - f64.load - call $~lib/util/number/dtoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 3 + i32.shl + local.get $5 + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 return end i32.const 32064 @@ -11096,48 +11093,45 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $__inlined_func$~lib/util/string/joinStringArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray local.get $0 - i32.load offset=12 - local.set $5 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - local.get $5 i32.const 1 i32.sub - local.tee $6 + local.tee $3 i32.const 0 i32.lt_s if @@ -11146,14 +11140,15 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - br $__inlined_func$~lib/util/string/joinStringArray + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray end - local.get $6 + local.get $3 i32.eqz if global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $4 + local.get $2 i32.load local.tee $1 i32.store @@ -11161,239 +11156,26 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + i32.const 13072 i32.const 9232 local.get $1 select - br $__inlined_func$~lib/util/string/joinStringArray + local.set $0 + br $__inlined_func$~lib/util/string/joinReferenceArray end + i32.const 9232 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9232 + i32.store offset=4 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.set $4 loop $for-loop|0 - local.get $0 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 - if - local.get $7 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.get $2 - i32.add - local.set $2 - 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 $2 - local.get $6 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=8 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 - if - local.get $3 - i32.const 1 - i32.shl - local.get $5 - 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 - call $~lib/memory/memory.copy - local.get $3 - local.get $7 - i32.add - local.set $3 - end - local.get $2 - if - local.get $3 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $1 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $3 - i32.add - local.set $3 - 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 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if - local.get $3 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - end - ) - (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) - block $__inlined_func$~lib/util/string/joinReferenceArray (result i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i32.const 0 - i32.store offset=8 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - br $__inlined_func$~lib/util/string/joinReferenceArray - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.load - local.tee $1 - i32.store - local.get $0 - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 13072 - i32.const 9232 - local.get $1 - select - br $__inlined_func$~lib/util/string/joinReferenceArray - end - i32.const 9232 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9232 - i32.store offset=4 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $3 + local.get $1 + local.get $3 i32.lt_s if global.get $~lib/memory/__stack_pointer @@ -11447,9 +11229,9 @@ if global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $1 i32.const 13072 i32.store offset=8 + local.get $1 local.get $0 i32.const 13072 call $~lib/string/String.__concat @@ -11460,12 +11242,11 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) local.get $1 i32.extend8_s i32.const 0 @@ -11500,50 +11281,51 @@ i32.add return end + local.get $0 local.get $1 i32.extend8_s - local.tee $3 - local.tee $1 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -11551,15 +11333,11 @@ end local.get $2 i32.add - local.set $1 - local.get $0 - local.get $3 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 i32.const 65535 i32.and @@ -11576,62 +11354,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 65535 i32.and - local.tee $1 - local.tee $2 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $1 - local.get $2 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $0 ) (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -11854,33 +11630,35 @@ ) (func $~lib/array/Array#join (param $0 i32) (result 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) - block $folding-inner1 - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + (local $7 i64) + block $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub - local.tee $7 + local.tee $3 i32.const 0 i32.lt_s if @@ -11889,275 +11667,276 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $7 - i32.eqz - if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - local.get $4 - i64.load - local.set $2 + local.get $3 + i32.eqz + if + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $2 + i64.load + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $7 + i64.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + i32.const 9824 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $7 + i64.const 4294967295 + i64.le_u + if global.get $~lib/memory/__stack_pointer - i32.const 15652 - 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 9824 - br $__inlined_func$~lib/util/number/utoa64 - end - local.get $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $0 - local.tee $1 - i32.const 100000 + local.get $7 + i32.wrap_i64 + local.tee $2 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 i32.lt_u if (result i32) - local.get $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.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add 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 + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa32_dec_lut else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u + local.get $0 + i32.const 10000000 + i32.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 + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add 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 + 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 - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $2 - local.get $0 - call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - end - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 20 - i32.add - i32.mul - i32.const 20 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - loop $for-loop|0 - local.get $3 - local.get $7 - i32.lt_s - if - local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $6 - i32.add - local.get $3 - i32.const 3 - i32.shl - local.get $4 - i32.add - i64.load - call $~lib/util/number/itoa_buffered + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store local.get $1 - i32.add - local.set $1 + local.get $2 local.get $0 - if - local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add - i32.const 9520 - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $1 - i32.add - local.set $1 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $7 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $7 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $7 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $7 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $7 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $7 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $7 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $7 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $7 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $7 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end - local.get $3 + local.tee $0 i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $7 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $5 - local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add - local.get $7 - i32.const 3 - i32.shl - local.get $4 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 20 + i32.add + i32.mul + i32.const 20 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $5 i32.gt_s if - local.get $6 + local.get $1 + i32.const 1 + i32.shl local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + i32.add + local.get $5 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $6 + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 9520 + local.get $6 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $6 + i32.add + local.set $1 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end + end + local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 return end i32.const 32064 @@ -12170,11 +11949,10 @@ (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 i64.const 0 i64.lt_s - local.tee $2 + local.tee $3 if local.get $0 i32.const 45 @@ -12188,7 +11966,7 @@ i64.const 10 i64.lt_u if - local.get $2 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -12197,7 +11975,7 @@ i64.const 48 i64.or i64.store16 - local.get $2 + local.get $3 i32.const 1 i32.add return @@ -12208,59 +11986,58 @@ if local.get $1 i32.wrap_i64 - local.tee $3 - local.tee $4 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $4 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $4 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $4 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $4 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $4 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $4 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $4 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $4 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.get $2 + local.get $3 i32.add - local.set $2 + local.set $3 local.get $0 - local.get $3 local.get $2 + local.get $3 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -12315,15 +12092,353 @@ i32.add end end - local.get $2 + local.get $3 i32.add - local.tee $2 + local.tee $3 call $~lib/util/number/utoa64_dec_lut end - local.get $2 + local.get $3 + ) + (func $~lib/array/Array#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) + block $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + 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 15652 + i32.lt_s + br_if $folding-inner0 + 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 9824 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $2 + i64.sub + local.get $2 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $1 + select + local.tee $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + local.tee $3 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + local.get $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.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa64_dec_lut + end + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 3 + i32.shl + local.get $5 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $7 + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 9520 + local.get $7 + i32.const 1 + i32.shl + call $~lib/memory/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 $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 3 + i32.shl + local.get $5 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + return + end + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (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 @@ -12340,62 +12455,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 255 i32.and - local.tee $1 - local.tee $2 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $1 - local.get $2 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $0 ) (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12404,32 +12517,32 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + local.get $0 + i32.load offset=4 + local.set $6 + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=12 - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $7 @@ -12441,14 +12554,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end local.get $7 i32.eqz if - local.get $3 + local.get $6 i32.load8_u call $~lib/util/number/utoa32 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -12463,80 +12578,81 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $5 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $5 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $0 i32.store loop $for-loop|0 - local.get $2 + local.get $4 local.get $7 i32.lt_s if - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add - local.get $2 - local.get $3 + local.get $4 + local.get $6 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $2 i32.add - local.set $0 - local.get $4 + local.set $2 + local.get $5 if - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 - local.get $4 + local.get $2 + local.get $5 i32.add - local.set $0 + local.set $2 end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|0 end end - local.get $5 - local.get $0 + local.get $2 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add - local.get $3 + local.get $6 local.get $7 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $2 i32.add - local.tee $0 - i32.gt_s + local.tee $1 + local.get $3 + i32.lt_s if - local.get $6 local.get $0 + local.get $1 call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -12547,8 +12663,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 end + local.get $0 ) (func $start:std/array~anonymous|53 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -13412,52 +13528,15 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array~visit (param $0 i32) + (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $1 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner3 block $folding-inner2 block $folding-inner1 - block $invalid - block $std/array/ArrayStr + block $folding-inner0 + block $invalid block $std/array/Proxy block $std/array/Dim block $std/array/Ref @@ -13467,7 +13546,7 @@ i32.const 8 i32.sub i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner3 $std/array/Ref $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner2 $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-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner1 $std/array/Ref $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $std/array/Dim $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner2 $folding-inner3 $std/array/Proxy $folding-inner2 $folding-inner3 $folding-inner2 $folding-inner3 $folding-inner2 $folding-inner3 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner3 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner3 $invalid end return end @@ -13479,18 +13558,56 @@ end return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - call $~lib/array/Array~visit - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable + return end local.get $0 - call $~lib/array/Array~visit + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load local.tee $0 if local.get $0 @@ -13499,7 +13616,7 @@ return end local.get $0 - i32.load + i32.load offset=4 local.tee $0 if local.get $0 @@ -13542,24 +13659,24 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store block $__inlined_func$std/array/isSorted (result i32) i32.const 1 local.set $2 local.get $0 + i32.load offset=4 + local.get $0 i32.load offset=12 - local.set $3 + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $5 loop $for-loop|0 local.get $2 - local.get $3 + local.get $5 i32.lt_s if local.get $0 @@ -13567,16 +13684,16 @@ i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $4 + local.set $3 local.get $0 local.get $2 call $~lib/array/Array#__get - local.set $5 + local.set $4 i32.const 2 global.set $~argumentsLength i32.const 0 + local.get $3 local.get $4 - local.get $5 local.get $1 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -13721,19 +13838,19 @@ i32.shl local.get $0 i32.add - local.tee $7 - i32.load offset=4 local.tee $5 + i32.load offset=4 + local.tee $7 i32.store local.get $6 - local.get $7 + local.get $5 i32.load - local.tee $6 + local.tee $5 i32.store offset=4 i32.const 2 global.set $~argumentsLength + local.get $7 local.get $5 - local.get $6 local.get $3 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -13839,229 +13956,16 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $std/array/assertStableSortedForComplexObjects - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $folding-inner0 - 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 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 - i64.const 0 - i64.store offset=16 - local.get $3 - global.get $std/array/inputStabArr - local.tee $4 - i32.store offset=8 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - i32.const 0 - local.get $4 - i32.load offset=12 - local.tee $5 - local.get $5 - i32.const 0 - i32.gt_s - select - local.set $6 - local.get $2 - local.get $5 - local.get $6 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $5 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $7 - i32.store - local.get $7 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=4 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $5 - i32.const 2 - i32.shl - local.set $5 - loop $while-continue|0 - local.get $0 - local.get $5 - i32.lt_u - if - local.get $0 - local.get $2 - i32.add - local.get $0 - local.get $4 - i32.add - i32.load - local.tee $6 - i32.store - local.get $6 - if - local.get $7 - local.get $6 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $0 - i32.const 4 - i32.add - 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 - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $7 - i32.store - local.get $0 - i32.const 8880 - i32.store offset=4 - local.get $7 - i32.load offset=4 - local.get $7 - i32.load offset=12 - i32.const 8880 - call $~lib/util/sort/SORT - local.get $3 - local.get $7 - i32.store offset=12 - i32.const 1 - local.set $0 - global.get $~lib/memory/__stack_pointer - global.get $std/array/inputStabArr - local.tee $2 - i32.store - local.get $2 - i32.load offset=12 - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - block $for-break0 - global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $1 - call $~lib/array/Array#__get - local.tee $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/outputStabArr - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $1 - call $~lib/array/Array#__get - local.tee $4 - i32.store offset=20 - local.get $3 - i32.load - local.get $4 - i32.load - i32.ne - if (result i32) - i32.const 1 - else - local.get $3 - i32.load offset=4 - local.get $4 - i32.load offset=4 - i32.ne - end - if - i32.const 0 - local.set $0 - br $for-break0 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1042 - 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 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -14069,18 +13973,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) - local.get $2 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT + 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 @@ -14088,21 +13991,23 @@ i32.const 15652 i32.lt_s br_if $folding-inner0 + local.get $0 + local.set $2 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store i32.const 1 - local.set $2 - local.get $0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $5 + local.set $4 loop $for-loop|0 - local.get $2 - local.get $5 + local.get $0 + local.get $4 i32.lt_s if - local.get $0 local.get $2 + local.get $0 i32.const 1 i32.sub call $~lib/array/Array#__get @@ -14110,17 +14015,17 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store - local.get $0 local.get $2 + local.get $0 call $~lib/array/Array#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $3 - local.get $4 + local.get $5 local.get $1 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -14134,10 +14039,10 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/array/Array> end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -14226,8 +14131,11 @@ i32.const 9520 i32.store local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 i32.const 9520 - call $~lib/array/Array<~lib/string/String|null>#join + call $~lib/util/string/joinStringArray global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -14314,36 +14222,39 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $3 local.tee $2 i32.const 0 i32.store local.get $2 i32.const 9520 i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> (result i32) - local.get $0 - i32.load offset=4 - local.set $3 + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $0 + local.get $3 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 0 + i32.store offset=8 + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> local.get $0 - i32.load offset=12 - local.get $2 - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 0 - i32.store offset=8 i32.const 1 i32.sub - local.tee $4 + local.tee $3 i32.const 0 i32.lt_s if @@ -14352,13 +14263,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 + local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $4 + local.get $3 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $0 i32.store @@ -14369,6 +14281,7 @@ else i32.const 9232 end + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -14384,37 +14297,37 @@ i32.load i32.const 1 i32.shr_u - local.set $5 + local.set $4 loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load - local.tee $6 + local.tee $5 i32.store - local.get $6 + local.get $5 if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 call $~lib/array/Array#toString - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=8 local.get $0 - local.get $6 + local.get $5 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $5 + local.get $4 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -14431,10 +14344,10 @@ end end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load local.tee $1 @@ -14458,12 +14371,12 @@ i32.const 12 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 + local.get $0 return end i32.const 32064 @@ -14478,90 +14391,144 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 f64) - (local $6 f32) + (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 $10 f64) + (local $11 i64) + (local $12 f32) (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + (local $42 i32) + (local $43 i32) + (local $44 i32) + (local $45 i32) + (local $46 i32) + (local $47 i32) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + (local $53 i32) + (local $54 i32) + (local $55 i32) + (local $56 i32) + (local $57 i32) + (local $58 i32) + (local $59 i32) + (local $60 i32) + (local $61 i32) + (local $62 i32) + (local $63 i32) + (local $64 i32) + (local $65 i32) + (local $66 i32) + (local $67 i32) global.get $~lib/memory/__stack_pointer i32.const 172 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner3 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $0 + local.get $1 i64.const 0 i64.store offset=32 - local.get $0 + local.get $1 i64.const 0 i64.store offset=40 - local.get $0 + local.get $1 i64.const 0 i64.store offset=48 - local.get $0 + local.get $1 i64.const 0 i64.store offset=56 - local.get $0 + local.get $1 i64.const 0 i64.store offset=64 - local.get $0 + local.get $1 i64.const 0 i64.store offset=72 - local.get $0 + local.get $1 i64.const 0 i64.store offset=80 - local.get $0 + local.get $1 i64.const 0 i64.store offset=88 - local.get $0 + local.get $1 i64.const 0 i64.store offset=96 - local.get $0 + local.get $1 i64.const 0 i64.store offset=104 - local.get $0 + local.get $1 i64.const 0 i64.store offset=112 - local.get $0 + local.get $1 i64.const 0 i64.store offset=120 - local.get $0 + local.get $1 i64.const 0 i64.store offset=128 - local.get $0 + local.get $1 i64.const 0 i64.store offset=136 - local.get $0 + local.get $1 i64.const 0 i64.store offset=144 - local.get $0 + local.get $1 i64.const 0 i64.store offset=152 - local.get $0 + local.get $1 i64.const 0 i64.store offset=160 - local.get $0 + local.get $1 i32.const 0 i32.store offset=168 memory.size @@ -14601,9 +14568,9 @@ global.set $std/array/arr i32.const 0 call $std/array/Ref#constructor - 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 i32.const 4 @@ -14612,16 +14579,16 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14631,76 +14598,76 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $0 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store end - local.get $0 + local.get $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 0 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $65 i32.store offset=4 - local.get $2 + local.get $65 i32.const 0 i32.const 1 call $~lib/memory/memory.fill - local.get $0 local.get $2 + local.get $65 i32.store - local.get $2 + local.get $65 if - local.get $0 local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + local.get $65 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $0 local.get $2 + local.get $65 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.get $2 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1664 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.eqz if i32.const 0 @@ -14716,9 +14683,9 @@ i32.const 6 i32.const 1696 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1 i32.const 1 i32.const 3 @@ -14729,12 +14696,12 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 call $std/array/isArraysEqual i32.eqz if @@ -14745,7 +14712,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 i32.const 2147483647 @@ -14756,12 +14723,12 @@ i32.const 6 i32.const 1760 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 call $std/array/isArraysEqual i32.eqz if @@ -14772,7 +14739,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 i32.const -3 @@ -14783,12 +14750,12 @@ i32.const 6 i32.const 1792 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 call $std/array/isArraysEqual i32.eqz if @@ -14799,7 +14766,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const -2 i32.const 2147483647 @@ -14810,12 +14777,12 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 call $std/array/isArraysEqual i32.eqz if @@ -14826,7 +14793,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 i32.const 0 @@ -14837,12 +14804,12 @@ i32.const 6 i32.const 1856 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 call $std/array/isArraysEqual i32.eqz if @@ -14863,39 +14830,39 @@ i32.store offset=12 local.get $1 i32.load offset=4 - local.set $2 + local.set $65 i32.const 1 local.get $1 i32.load offset=12 - local.tee $7 - local.get $7 + local.tee $66 + local.get $66 i32.const 1 i32.gt_s select - local.set $0 + local.set $2 i32.const 3 - local.get $7 - local.get $7 + local.get $66 + local.get $66 i32.const 3 i32.gt_s select - local.set $7 + local.set $66 loop $for-loop|0 - local.get $0 - local.get $7 + local.get $2 + local.get $66 i32.lt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.get $2 + local.get $65 i32.add i32.const 1 i32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -14904,12 +14871,12 @@ i32.const 7 i32.const 1936 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 call $std/array/isArraysEqual i32.eqz if @@ -14921,33 +14888,34 @@ unreachable end local.get $1 + local.tee $2 i32.load offset=4 - local.set $2 + local.set $65 i32.const 0 - local.get $1 + local.get $2 i32.load offset=12 - local.tee $7 - local.get $7 + local.tee $66 + local.get $66 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|01 - local.get $0 - local.get $7 + local.get $1 + local.get $66 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $65 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|01 end end @@ -14956,12 +14924,12 @@ i32.const 7 i32.const 1984 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 + local.get $2 local.get $1 - local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -14972,44 +14940,44 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $65 i32.const 0 - local.get $1 + local.get $2 i32.load offset=12 - local.tee $7 - local.get $7 + local.tee $66 + local.get $66 i32.const 0 i32.gt_s select - local.set $0 - local.get $7 + local.set $1 + local.get $66 i32.const 3 i32.sub - local.tee $7 + local.tee $66 i32.const 0 - local.get $7 + local.get $66 i32.const 0 i32.gt_s select - local.set $7 + local.set $66 loop $for-loop|03 - local.get $0 - local.get $7 + local.get $1 + local.get $66 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $65 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|03 end end @@ -15018,12 +14986,12 @@ i32.const 7 i32.const 2032 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 + local.get $2 local.get $1 - local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15034,37 +15002,37 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.set $2 - local.get $1 + local.set $65 + local.get $2 i32.load offset=12 - local.tee $7 + local.tee $66 i32.const 2 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|05 - local.get $0 - local.get $7 + local.get $1 + local.get $66 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $65 i32.add i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|05 end end @@ -15073,12 +15041,12 @@ i32.const 7 i32.const 2080 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 + local.get $2 local.get $1 - local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15089,41 +15057,41 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.set $2 + local.set $65 i32.const 1 - local.get $1 + local.get $2 i32.load offset=12 - local.tee $7 - local.get $7 + local.tee $66 + local.get $66 i32.const 1 i32.gt_s select - local.set $0 + local.set $1 i32.const 0 - local.get $7 - local.get $7 + local.get $66 + local.get $66 i32.const 0 i32.gt_s select - local.set $7 + local.set $66 loop $for-loop|07 - local.get $0 - local.get $7 + local.get $1 + local.get $66 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $65 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|07 end end @@ -15132,12 +15100,12 @@ i32.const 7 i32.const 2128 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 + local.get $2 local.get $1 - local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15150,9 +15118,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -15164,9 +15132,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15180,17 +15148,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 42 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -15205,9 +15173,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 1 i32.ne @@ -15221,9 +15189,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15237,9 +15205,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#pop i32.const 42 i32.ne @@ -15253,9 +15221,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -15267,9 +15235,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15283,17 +15251,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 43 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 1 i32.ne @@ -15307,9 +15275,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15323,9 +15291,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15340,17 +15308,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 44 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 2 i32.ne @@ -15364,9 +15332,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15380,9 +15348,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15397,9 +15365,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -15414,17 +15382,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 45 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 3 i32.ne @@ -15438,9 +15406,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15454,9 +15422,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15471,9 +15439,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -15488,9 +15456,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -15504,40 +15472,40 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 2 i32.const 2 i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.load offset=4 i32.store offset=16 - local.get $1 + local.get $2 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $2 i32.const 1 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $0 local.get $1 + local.get $2 i32.store offset=16 - local.get $1 + local.get $2 i32.const 0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $2 i32.const 0 i32.store offset=12 - local.get $1 + local.get $2 i32.load offset=12 if i32.const 0 @@ -15553,9 +15521,9 @@ i32.const 3 i32.const 2224 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#at i32.const 1 @@ -15568,7 +15536,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#at i32.const 4 @@ -15581,7 +15549,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -1 call $~lib/array/Array#at i32.const 4 @@ -15594,7 +15562,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -4 call $~lib/array/Array#at i32.const 1 @@ -15610,23 +15578,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $0 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer + local.get $2 local.get $1 - local.get $0 call $~lib/array/Array#concat - local.tee $1 + local.tee $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $65 i32.store - local.get $2 + local.get $65 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15640,9 +15608,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $65 i32.store - local.get $2 + local.get $65 i32.load offset=12 i32.const 3 i32.ne @@ -15654,7 +15622,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=12 i32.const 3 i32.ne @@ -15671,19 +15639,19 @@ i32.const 3 i32.const 2272 call $~lib/rt/__newArray - local.set $2 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $65 i32.store offset=8 - local.get $1 local.get $2 + local.get $65 call $~lib/array/Array#concat drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $65 i32.store - local.get $2 + local.get $65 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15695,7 +15663,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15708,7 +15676,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -15721,7 +15689,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -15734,30 +15702,30 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 46 call $~lib/array/Array#push drop - local.get $0 + local.get $1 i32.const 47 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $2 + global.get $std/array/arr + local.tee $65 i32.store - local.get $1 local.get $2 - local.get $0 + local.get $65 + local.get $1 call $~lib/array/Array#concat - local.tee $1 + local.tee $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $65 i32.store - local.get $2 + local.get $65 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15769,7 +15737,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=12 i32.const 2 i32.ne @@ -15781,7 +15749,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=12 i32.const 5 i32.ne @@ -15793,7 +15761,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15806,7 +15774,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -15819,7 +15787,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -15832,7 +15800,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 call $~lib/array/Array#__get i32.const 46 @@ -15845,7 +15813,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 4 call $~lib/array/Array#__get i32.const 47 @@ -15858,10 +15826,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/array/Array#pop drop - local.get $1 + local.get $2 i32.load offset=12 i32.const 4 i32.ne @@ -15879,9 +15847,9 @@ i32.const 3 i32.const 2304 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -15892,17 +15860,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $2 + global.get $std/array/arr + local.tee $65 i32.store offset=8 - local.get $1 - local.get $0 local.get $2 + local.get $1 + local.get $65 call $~lib/array/Array#concat - local.tee $1 + local.tee $2 i32.store offset=16 - local.get $1 + local.get $2 i32.load offset=12 i32.const 3 i32.ne @@ -15914,7 +15882,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -15930,28 +15898,28 @@ i32.const 3 i32.const 2336 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2384 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15969,28 +15937,28 @@ i32.const 3 i32.const 2432 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 1 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2480 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16008,28 +15976,28 @@ i32.const 3 i32.const 2528 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2576 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16047,28 +16015,28 @@ i32.const 3 i32.const 2624 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2672 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16086,28 +16054,28 @@ i32.const 3 i32.const 2720 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2768 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16125,28 +16093,28 @@ i32.const 3 i32.const 2816 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2864 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16164,28 +16132,28 @@ i32.const 3 i32.const 2912 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2960 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16203,28 +16171,28 @@ i32.const 3 i32.const 3008 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3056 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16242,28 +16210,28 @@ i32.const 3 i32.const 3104 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3152 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16281,28 +16249,28 @@ i32.const 3 i32.const 3200 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3248 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16320,28 +16288,28 @@ i32.const 3 i32.const 3296 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3344 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16359,28 +16327,28 @@ i32.const 3 i32.const 3392 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const -4 i32.const -3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3440 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16394,17 +16362,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 42 call $~lib/array/Array#unshift drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 4 i32.ne @@ -16418,9 +16386,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16434,9 +16402,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -16451,9 +16419,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16468,9 +16436,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16485,9 +16453,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -16502,17 +16470,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 41 call $~lib/array/Array#unshift drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 5 i32.ne @@ -16526,9 +16494,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16542,9 +16510,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -16559,9 +16527,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -16576,9 +16544,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -16593,9 +16561,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -16610,9 +16578,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -16627,11 +16595,11 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 0 i32.le_s if @@ -16642,29 +16610,29 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 - local.tee $2 + local.tee $65 i32.load - local.get $2 - local.get $2 + local.get $65 + local.get $65 i32.const 4 i32.add - local.get $1 + local.get $2 i32.const 1 i32.sub - local.tee $1 + local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $67 call $~lib/memory/memory.copy - local.get $2 - local.get $8 + local.get $65 + local.get $67 i32.add i32.const 0 i32.store - local.get $0 local.get $1 + local.get $2 i32.store offset=12 global.set $std/array/i global.get $std/array/i @@ -16680,9 +16648,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 4 i32.ne @@ -16696,9 +16664,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16712,9 +16680,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -16729,9 +16697,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16746,9 +16714,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16763,9 +16731,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -16780,9 +16748,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -16798,9 +16766,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 i32.const 3 i32.ne @@ -16814,9 +16782,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16830,9 +16798,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -16847,9 +16815,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16864,9 +16832,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16885,26 +16853,26 @@ i32.const 3 i32.const 3488 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $1 + local.tee $2 i32.store offset=16 i32.const 3 i32.const 2 i32.const 3 i32.const 3536 call $~lib/rt/__newArray - local.set $2 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $65 i32.store offset=8 - local.get $1 local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16917,23 +16885,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 2 i32.const 4 call $~lib/array/Array#slice - local.tee $1 + local.tee $2 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3568 call $~lib/rt/__newArray - local.set $2 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $65 i32.store offset=8 - local.get $1 local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16946,23 +16914,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 5 call $~lib/array/Array#slice - local.tee $1 + local.tee $2 i32.store offset=16 i32.const 4 i32.const 2 i32.const 3 i32.const 3600 call $~lib/rt/__newArray - local.set $2 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $65 i32.store offset=8 - local.get $1 local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16975,14 +16943,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 0 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $1 + local.tee $2 i32.store offset=16 + local.get $2 local.get $1 - local.get $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16995,23 +16963,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $1 + local.tee $2 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3648 call $~lib/rt/__newArray - local.set $2 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $65 i32.store offset=8 - local.get $1 local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17024,23 +16992,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 2 i32.const -1 call $~lib/array/Array#slice - local.tee $1 + local.tee $2 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3680 call $~lib/rt/__newArray - local.set $2 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $65 i32.store offset=8 - local.get $1 local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17053,23 +17021,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -3 i32.const -1 call $~lib/array/Array#slice - local.tee $1 + local.tee $2 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3712 call $~lib/rt/__newArray - local.set $2 + local.set $65 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $65 i32.store offset=8 - local.get $1 local.get $2 + local.get $65 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17081,15 +17049,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -1 i32.const -3 call $~lib/array/Array#slice - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 + local.get $2 i32.load offset=12 if i32.const 0 @@ -17099,15 +17067,15 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 10 i32.const 2147483647 call $~lib/array/Array#slice - 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.load offset=12 if i32.const 0 @@ -17124,8 +17092,6 @@ local.get $1 i32.load offset=4 local.set $2 - i32.const 0 - local.set $0 local.get $1 i32.load offset=12 local.tee $1 @@ -17135,14 +17101,14 @@ local.get $1 i32.const 1 i32.shr_u - local.set $7 + local.set $65 local.get $1 i32.const 1 i32.sub local.set $1 loop $while-continue|0 local.get $0 - local.get $7 + local.get $65 i32.lt_u if local.get $0 @@ -17150,10 +17116,10 @@ i32.shl local.get $2 i32.add - local.tee $8 + local.tee $66 i32.load - local.set $9 - local.get $8 + local.set $67 + local.get $66 local.get $1 local.get $0 i32.sub @@ -17161,11 +17127,11 @@ i32.shl local.get $2 i32.add - local.tee $8 + local.tee $66 i32.load i32.store - local.get $8 - local.get $9 + local.get $66 + local.get $67 i32.store local.get $0 i32.const 1 @@ -17292,21 +17258,21 @@ local.get $1 i32.store offset=16 i32.const 0 - local.set $0 + local.set $2 local.get $1 i32.load offset=12 - local.set $2 + local.set $0 loop $for-loop|08 local.get $0 local.get $2 - i32.lt_s + i32.gt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/array/Array#__get local.get $1 i32.load offset=12 - local.get $0 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17319,10 +17285,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|08 end end @@ -17344,21 +17310,21 @@ local.get $1 i32.store offset=4 i32.const 0 - local.set $0 + local.set $2 local.get $1 i32.load offset=12 - local.set $2 + local.set $0 loop $for-loop|1 local.get $0 local.get $2 - i32.lt_s + i32.gt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/array/Array#__get local.get $1 i32.load offset=12 - local.get $0 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17371,10 +17337,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end @@ -17396,21 +17362,21 @@ local.get $1 i32.store offset=12 i32.const 0 - local.set $0 + local.set $2 local.get $1 i32.load offset=12 - local.set $2 + local.set $0 loop $for-loop|2 local.get $0 local.get $2 - i32.lt_s + i32.gt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/array/Array#__get local.get $1 i32.load offset=12 - local.get $0 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17423,10 +17389,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|2 end end @@ -17442,24 +17408,24 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $1 + local.tee $0 i32.store offset=20 i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 local.set $2 + local.get $0 + i32.load offset=12 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $1 local.get $0 + local.get $2 call $~lib/array/Array#__get - local.get $1 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17472,10 +17438,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end @@ -17491,24 +17457,24 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $1 + local.tee $0 i32.store offset=24 i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 local.set $2 + local.get $0 + i32.load offset=12 + local.set $1 loop $for-loop|4 - local.get $0 + local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $1 local.get $0 + local.get $2 call $~lib/array/Array#__get - local.get $1 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17521,10 +17487,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|4 end end @@ -17540,24 +17506,24 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $1 + local.tee $0 i32.store offset=28 i32.const 0 - local.set $0 - local.get $1 - i32.load offset=12 local.set $2 + local.get $0 + i32.load offset=12 + local.set $1 loop $for-loop|5 - local.get $0 + local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $1 local.get $0 + local.get $2 call $~lib/array/Array#__get - local.get $1 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $2 i32.sub i32.const 1 i32.sub @@ -17570,60 +17536,58 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|5 end end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - i32.const 0 - local.set $0 i32.const -1 - local.set $1 + local.set $0 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $2 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|012 - local.get $0 - local.get $7 - i32.lt_s + local.set $1 + loop $while-continue|013 + local.get $2 + local.get $9 + i32.gt_s if - local.get $0 - local.tee $1 + local.get $9 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 44 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|012 + local.set $9 + br $while-continue|013 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i if @@ -17636,51 +17600,49 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - i32.const 0 - local.set $0 i32.const -1 - local.set $1 + local.set $0 block $__inlined_func$~lib/array/Array#indexOf39 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $2 select br_if $__inlined_func$~lib/array/Array#indexOf39 - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|040 - local.get $0 - local.get $7 - i32.lt_s + local.set $1 + loop $while-continue|041 + local.get $2 + local.get $8 + i32.gt_s if - local.get $0 - local.tee $1 + local.get $8 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 42 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf39 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|040 + local.set $8 + br $while-continue|041 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 2 @@ -17695,51 +17657,49 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - i32.const 0 - local.set $0 i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#indexOf41 - local.get $2 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf42 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $7 - select - br_if $__inlined_func$~lib/array/Array#indexOf41 local.get $2 + select + br_if $__inlined_func$~lib/array/Array#indexOf42 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|042 - local.get $0 + local.set $1 + loop $while-continue|044 + local.get $2 local.get $7 - i32.lt_s + i32.gt_s if - local.get $0 - local.tee $1 + local.get $7 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf41 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf42 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|042 + local.set $7 + br $while-continue|044 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -17754,14 +17714,14 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store i32.const 100 - local.set $0 + local.set $2 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf43 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf45 + local.get $0 i32.load offset=12 local.tee $7 i32.const 100 @@ -17769,30 +17729,30 @@ i32.const 1 local.get $7 select - br_if $__inlined_func$~lib/array/Array#indexOf43 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf45 + local.get $0 i32.load offset=4 - local.set $2 - loop $while-continue|044 - local.get $0 + local.set $0 + loop $while-continue|047 + local.get $2 local.get $7 i32.lt_s if - local.get $0 + local.get $2 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf43 + br_if $__inlined_func$~lib/array/Array#indexOf45 local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|044 + local.set $2 + br $while-continue|047 end end i32.const -1 @@ -17813,58 +17773,58 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store i32.const -1 - local.set $0 - block $__inlined_func$~lib/array/Array#indexOf45 - local.get $1 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf48 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $1 select - br_if $__inlined_func$~lib/array/Array#indexOf45 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf48 + local.get $1 i32.const 100 i32.sub - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 + local.set $2 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|046 - local.get $0 + local.set $0 + loop $while-continue|050 + local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf45 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf48 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|046 + local.set $2 + br $while-continue|050 end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -17879,58 +17839,58 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store i32.const -1 - local.set $0 - block $__inlined_func$~lib/array/Array#indexOf47 - local.get $1 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf51 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $1 select - br_if $__inlined_func$~lib/array/Array#indexOf47 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf51 + local.get $1 i32.const 2 i32.sub - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 + local.set $2 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|048 - local.get $0 + local.set $0 + loop $while-continue|053 + local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf47 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf51 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $2 + br $while-continue|053 end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 global.set $std/array/i global.get $std/array/i i32.const 3 @@ -17945,58 +17905,58 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store i32.const -1 - local.set $0 - block $__inlined_func$~lib/array/Array#indexOf49 - local.get $1 + local.set $2 + block $__inlined_func$~lib/array/Array#indexOf54 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $1 select - br_if $__inlined_func$~lib/array/Array#indexOf49 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf54 + local.get $1 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 + local.set $2 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|050 - local.get $0 + local.set $0 + loop $while-continue|056 + local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf49 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf54 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|050 + local.set $2 + br $while-continue|056 end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -18011,51 +17971,49 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - i32.const 0 - local.set $0 i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#indexOf51 - local.get $2 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf57 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $7 - select - br_if $__inlined_func$~lib/array/Array#indexOf51 local.get $2 + select + br_if $__inlined_func$~lib/array/Array#indexOf57 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|052 - local.get $0 - local.get $7 - i32.lt_s + local.set $1 + loop $while-continue|059 + local.get $2 + local.get $6 + i32.gt_s if - local.get $0 - local.tee $1 + local.get $6 + local.tee $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf51 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf57 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|052 + local.set $6 + br $while-continue|059 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -18070,45 +18028,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store i32.const 1 - local.set $0 + local.set $2 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf53 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf60 + local.get $0 i32.load offset=12 - local.tee $7 + local.tee $6 i32.const 1 i32.le_s i32.const 1 - local.get $7 + local.get $6 select - br_if $__inlined_func$~lib/array/Array#indexOf53 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf60 + local.get $0 i32.load offset=4 - local.set $2 - loop $while-continue|054 - local.get $0 - local.get $7 + local.set $0 + loop $while-continue|062 + local.get $2 + local.get $6 i32.lt_s if - local.get $0 + local.get $2 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf53 + br_if $__inlined_func$~lib/array/Array#indexOf60 local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|054 + local.set $2 + br $while-continue|062 end end i32.const -1 @@ -18129,45 +18087,45 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store i32.const 2 - local.set $0 + local.set $2 i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf55 - local.get $2 + block $__inlined_func$~lib/array/Array#indexOf63 + local.get $0 i32.load offset=12 - local.tee $7 + local.tee $6 i32.const 2 i32.le_s i32.const 1 - local.get $7 + local.get $6 select - br_if $__inlined_func$~lib/array/Array#indexOf55 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf63 + local.get $0 i32.load offset=4 - local.set $2 - loop $while-continue|056 - local.get $0 - local.get $7 + local.set $0 + loop $while-continue|065 + local.get $2 + local.get $6 i32.lt_s if - local.get $0 + local.get $2 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf55 + br_if $__inlined_func$~lib/array/Array#indexOf63 local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|056 + local.set $2 + br $while-continue|065 end end i32.const -1 @@ -18191,37 +18149,35 @@ i32.const 10 i32.const 4000 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $2 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $0 i32.load offset=4 - local.set $2 - loop $while-continue|057 - local.get $0 - local.get $7 - i32.lt_s + local.set $0 + loop $while-continue|067 + local.get $2 + local.get $5 + i32.gt_s if - local.get $0 + local.get $5 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add f32.load f32.const nan:0x400000 @@ -18230,8 +18186,8 @@ local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $5 + br $while-continue|067 end end i32.const -1 @@ -18253,37 +18209,35 @@ i32.const 11 i32.const 4032 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $2 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $0 i32.load offset=4 - local.set $2 - loop $while-continue|058 - local.get $0 - local.get $7 - i32.lt_s + local.set $0 + loop $while-continue|069 + local.get $2 + local.get $4 + i32.gt_s if - local.get $0 + local.get $4 local.tee $1 i32.const 3 i32.shl - local.get $2 + local.get $0 i32.add f64.load f64.const nan:0x8000000000000 @@ -18292,8 +18246,8 @@ local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|058 + local.set $4 + br $while-continue|069 end end i32.const -1 @@ -18322,59 +18276,58 @@ global.set $~argumentsLength local.get $2 i32.load offset=12 - local.tee $0 - local.set $7 + local.tee $1 + local.set $4 i32.const -1 - local.set $1 + local.set $0 block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 + local.get $1 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 - local.get $7 + local.get $1 + local.get $4 i32.add - local.get $0 + local.get $1 i32.const 1 i32.sub - local.get $7 - local.get $0 - local.get $7 + local.get $4 + local.get $1 + local.get $4 i32.le_s select - local.get $7 + local.get $4 i32.const 0 i32.lt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $7 - loop $while-continue|09 + local.set $1 + loop $while-continue|01 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $7 + local.get $1 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|09 + br $while-continue|01 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18389,27 +18342,26 @@ global.set $~argumentsLength local.get $2 i32.load offset=12 - local.set $1 + local.tee $1 + local.set $4 i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#lastIndexOf14 - local.get $2 - i32.load offset=12 - local.tee $7 + block $__inlined_func$~lib/array/Array#lastIndexOf6 + local.get $1 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf14 + br_if $__inlined_func$~lib/array/Array#lastIndexOf6 local.get $1 - local.get $7 + local.get $4 i32.add - local.get $7 + local.get $1 i32.const 1 i32.sub + local.get $4 local.get $1 - local.get $1 - local.get $7 - i32.ge_s + local.get $4 + i32.le_s select - local.get $1 + local.get $4 i32.const 0 i32.lt_s select @@ -18417,7 +18369,7 @@ local.get $2 i32.load offset=4 local.set $1 - loop $while-continue|015 + loop $while-continue|07 local.get $0 i32.const 0 i32.ge_s @@ -18430,12 +18382,12 @@ i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf14 + br_if $__inlined_func$~lib/array/Array#lastIndexOf6 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|015 + br $while-continue|07 end end i32.const -1 @@ -18453,50 +18405,51 @@ unreachable end i32.const -1 - local.set $0 - block $__inlined_func$~lib/array/Array#lastIndexOf16 + local.set $1 + block $__inlined_func$~lib/array/Array#lastIndexOf8 local.get $2 + local.tee $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf16 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf8 + local.get $2 i32.const 1 i32.sub i32.const 3 - local.get $1 + local.get $2 i32.const 3 i32.le_s select - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|059 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|071 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf16 - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf8 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|059 + local.set $1 + br $while-continue|071 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -18508,50 +18461,50 @@ unreachable end i32.const -1 - local.set $0 - block $__inlined_func$~lib/array/Array#lastIndexOf60 - local.get $2 + local.set $1 + block $__inlined_func$~lib/array/Array#lastIndexOf72 + local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf60 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf72 + local.get $2 i32.const 1 i32.sub i32.const 2 - local.get $1 + local.get $2 i32.const 2 i32.le_s select - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|061 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $2 + loop $while-continue|074 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf60 - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf72 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|061 + local.set $1 + br $while-continue|074 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1552 @@ -18561,45 +18514,46 @@ unreachable end i32.const -1 - local.set $0 - block $__inlined_func$~lib/array/Array#lastIndexOf62 - local.get $2 + local.set $1 + block $__inlined_func$~lib/array/Array#lastIndexOf75 + local.get $0 + local.tee $2 i32.load offset=12 - local.tee $1 + local.tee $0 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf62 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf75 + local.get $0 i32.const 2 i32.sub - local.set $0 + local.set $1 local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|063 - local.get $0 + local.set $0 + loop $while-continue|077 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf62 - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf75 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|063 + local.set $1 + br $while-continue|077 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1552 @@ -18610,12 +18564,12 @@ end i32.const -1 local.set $0 - block $__inlined_func$~lib/array/Array#lastIndexOf64 + block $__inlined_func$~lib/array/Array#lastIndexOf78 local.get $2 i32.load offset=12 local.tee $1 i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf64 + br_if $__inlined_func$~lib/array/Array#lastIndexOf78 local.get $1 i32.const 1 i32.sub @@ -18623,7 +18577,7 @@ local.get $2 i32.load offset=4 local.set $1 - loop $while-continue|065 + loop $while-continue|080 local.get $0 i32.const 0 i32.ge_s @@ -18636,12 +18590,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf64 + br_if $__inlined_func$~lib/array/Array#lastIndexOf78 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|065 + br $while-continue|080 end end i32.const -1 @@ -18663,29 +18617,29 @@ local.tee $2 i32.store i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf17 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf9 local.get $2 i32.load offset=12 - local.tee $7 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf17 + br_if $__inlined_func$~lib/array/Array#indexOf9 local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|018 - local.get $0 - local.get $7 + loop $while-continue|010 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -18693,18 +18647,18 @@ i32.load i32.const 44 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf17 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf9 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|018 + local.set $1 + br $while-continue|010 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -18720,29 +18674,29 @@ local.tee $2 i32.store i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf20 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf12 local.get $2 i32.load offset=12 - local.tee $7 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf20 + br_if $__inlined_func$~lib/array/Array#indexOf12 local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|021 - local.get $0 - local.get $7 + loop $while-continue|014 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -18750,18 +18704,18 @@ i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf20 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf12 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|021 + local.set $1 + br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -18777,29 +18731,29 @@ local.tee $2 i32.store i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf23 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf16 local.get $2 i32.load offset=12 - local.tee $7 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf23 + br_if $__inlined_func$~lib/array/Array#indexOf16 local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|024 - local.get $0 - local.get $7 + loop $while-continue|017 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -18807,18 +18761,18 @@ i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf23 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf16 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|024 + local.set $1 + br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.ge_s if @@ -18834,29 +18788,29 @@ local.tee $2 i32.store i32.const 100 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf26 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf19 local.get $2 i32.load offset=12 - local.tee $7 + local.tee $4 i32.const 100 i32.le_s i32.const 1 - local.get $7 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf26 + br_if $__inlined_func$~lib/array/Array#indexOf19 local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|027 - local.get $0 - local.get $7 + loop $while-continue|020 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -18864,18 +18818,18 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf26 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf19 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.ge_s if @@ -18888,58 +18842,59 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#indexOf29 - local.get $0 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf22 + local.get $1 i32.load offset=12 - local.tee $2 + local.tee $4 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf29 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf22 + local.get $4 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - local.get $0 + local.set $2 + local.get $1 i32.load offset=4 - local.set $0 - loop $while-continue|030 - local.get $1 + local.set $1 + loop $while-continue|023 local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $2 + local.tee $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf29 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf22 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|030 + local.set $2 + br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -18952,58 +18907,59 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#indexOf32 - local.get $0 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf25 + local.get $1 i32.load offset=12 - local.tee $2 + local.tee $4 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf32 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf25 + local.get $4 i32.const 2 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - local.get $0 + local.set $2 + local.get $1 i32.load offset=4 - local.set $0 - loop $while-continue|033 - local.get $1 + local.set $1 + loop $while-continue|026 local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $2 + local.tee $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf32 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf25 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|033 + local.set $2 + br $while-continue|026 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -19016,58 +18972,59 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store i32.const -1 - local.set $1 - block $__inlined_func$~lib/array/Array#indexOf35 - local.get $0 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf28 + local.get $1 i32.load offset=12 - local.tee $2 + local.tee $4 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf35 - local.get $2 + br_if $__inlined_func$~lib/array/Array#indexOf28 + local.get $4 i32.const 4 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - local.get $0 + local.set $2 + local.get $1 i32.load offset=4 - local.set $0 - loop $while-continue|036 - local.get $1 + local.set $1 + loop $while-continue|029 local.get $2 + local.get $4 i32.lt_s if - local.get $1 + local.get $2 + local.tee $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf35 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf28 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|036 + local.set $2 + br $while-continue|029 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -19083,29 +19040,29 @@ local.tee $2 i32.store i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf38 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf31 local.get $2 i32.load offset=12 - local.tee $7 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $7 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf38 + br_if $__inlined_func$~lib/array/Array#indexOf31 local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|039 - local.get $0 - local.get $7 + loop $while-continue|032 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -19113,18 +19070,18 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf38 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf31 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|039 + local.set $1 + br $while-continue|032 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -19140,29 +19097,29 @@ local.tee $2 i32.store i32.const 1 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf42 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf34 local.get $2 i32.load offset=12 - local.tee $7 + local.tee $4 i32.const 1 i32.le_s i32.const 1 - local.get $7 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf42 + br_if $__inlined_func$~lib/array/Array#indexOf34 local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|043 - local.get $0 - local.get $7 + loop $while-continue|035 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -19170,18 +19127,18 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf42 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf34 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|043 + local.set $1 + br $while-continue|035 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -19197,29 +19154,29 @@ local.tee $2 i32.store i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#indexOf46 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf37 local.get $2 i32.load offset=12 - local.tee $7 + local.tee $4 i32.const 2 i32.le_s i32.const 1 - local.get $7 + local.get $4 select - br_if $__inlined_func$~lib/array/Array#indexOf46 + br_if $__inlined_func$~lib/array/Array#indexOf37 local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|047 - local.get $0 - local.get $7 + loop $while-continue|038 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -19227,18 +19184,18 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf46 - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf37 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|047 + local.set $1 + br $while-continue|038 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 0 i32.lt_s if @@ -19249,58 +19206,56 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 2 - i32.const 10 - i32.const 4112 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 + i32.const 1 + i32.const 2 + i32.const 10 + i32.const 4112 + call $~lib/rt/__newArray local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $1 select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $1 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|066 - local.get $0 - local.get $2 - i32.lt_s + local.set $0 + loop $while-continue|082 + local.get $1 + local.get $27 + i32.gt_s if i32.const 1 - local.get $0 + local.get $27 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add f32.load - local.tee $6 + local.tee $12 f32.const nan:0x400000 f32.eq - local.get $6 - local.get $6 + local.get $12 + local.get $12 f32.ne i32.or br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $27 i32.const 1 i32.add - local.set $0 - br $while-continue|066 + local.set $27 + br $while-continue|082 end end i32.const 0 @@ -19314,58 +19269,56 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 3 - i32.const 11 - i32.const 4144 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 + i32.const 1 + i32.const 3 + i32.const 11 + i32.const 4144 + call $~lib/rt/__newArray local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $1 select br_if $__inlined_func$~lib/array/Array#includes drop - local.get $1 + local.get $0 i32.load offset=4 - local.set $1 - loop $while-continue|067 - local.get $0 - local.get $2 - i32.lt_s + local.set $0 + loop $while-continue|084 + local.get $1 + local.get $26 + i32.gt_s if i32.const 1 - local.get $0 + local.get $26 i32.const 3 i32.shl - local.get $1 + local.get $0 i32.add f64.load - local.tee $5 + local.tee $10 f64.const nan:0x8000000000000 f64.eq - local.get $5 - local.get $5 + local.get $10 + local.get $10 f64.ne i32.or br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $26 i32.const 1 i32.add - local.set $0 - br $while-continue|067 + local.set $26 + br $while-continue|084 end end i32.const 0 @@ -20507,7 +20460,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 @@ -20515,16 +20468,16 @@ i32.const 0 local.get $1 i32.load offset=12 - local.tee $7 - local.get $7 + local.tee $4 + local.get $4 i32.const 0 i32.gt_s select - local.set $8 + local.set $5 local.get $2 i32.const 1 - local.get $7 - local.get $8 + local.get $4 + local.get $5 i32.sub local.tee $2 local.get $2 @@ -20542,44 +20495,44 @@ i32.const 12 i32.const 0 call $~lib/rt/__newArray - local.tee $9 + local.tee $6 i32.store - local.get $9 + local.get $6 i32.load offset=4 local.get $1 i32.load offset=4 - local.tee $10 - local.get $8 + local.tee $7 + local.get $5 i32.const 2 i32.shl i32.add - local.tee $11 + local.tee $8 local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $7 + local.get $4 local.get $2 - local.get $8 + local.get $5 i32.add - local.tee $8 + local.tee $5 i32.ne if - local.get $11 local.get $8 + local.get $5 i32.const 2 i32.shl - local.get $10 - i32.add local.get $7 - local.get $8 + i32.add + local.get $4 + local.get $5 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $1 - local.get $7 + local.get $4 local.get $2 i32.sub i32.store offset=12 @@ -20587,9 +20540,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $6 i32.store offset=4 - local.get $9 + local.get $6 i32.load offset=12 i32.const 1 i32.ne @@ -20602,7 +20555,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $6 i32.const 0 call $~lib/array/Array#__get local.tee $0 @@ -20719,50 +20672,48 @@ global.get $~lib/memory/__stack_pointer i32.const 6144 i32.store offset=8 - i32.const 0 - local.set $1 local.get $0 i32.load offset=12 - local.set $2 + local.set $1 block $__inlined_func$~lib/array/Array#findIndex - loop $for-loop|075 - local.get $2 + loop $for-loop|093 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $61 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $61 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $61 local.get $0 i32.const 6144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex - local.get $1 + local.get $61 i32.const 1 i32.add - local.set $1 - br $for-loop|075 + local.set $61 + br $for-loop|093 end end i32.const -1 - local.set $1 + local.set $61 end - local.get $1 + local.get $61 global.set $std/array/i global.get $std/array/i if @@ -20776,55 +20727,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 6176 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 + local.get $1 i32.load offset=12 local.set $0 - block $__inlined_func$~lib/array/Array#findIndex76 - loop $for-loop|077 + block $__inlined_func$~lib/array/Array#findIndex95 + loop $for-loop|097 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $59 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $59 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $59 local.get $1 - local.get $2 i32.const 6176 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex76 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findIndex95 + local.get $59 i32.const 1 i32.add - local.set $1 - br $for-loop|077 + local.set $59 + br $for-loop|097 end end i32.const -1 - local.set $1 + local.set $59 end - local.get $1 + local.get $59 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -20840,55 +20789,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 6208 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 + local.get $1 i32.load offset=12 local.set $0 - block $__inlined_func$~lib/array/Array#findIndex78 - loop $for-loop|079 + block $__inlined_func$~lib/array/Array#findIndex99 + loop $for-loop|0101 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $58 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $58 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $58 local.get $1 - local.get $2 i32.const 6208 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex78 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findIndex99 + local.get $58 i32.const 1 i32.add - local.set $1 - br $for-loop|079 + local.set $58 + br $for-loop|0101 end end i32.const -1 - local.set $1 + local.set $58 end - local.get $1 + local.get $58 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -20904,55 +20851,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 6240 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 + local.get $1 i32.load offset=12 local.set $0 - block $__inlined_func$~lib/array/Array#findIndex80 - loop $for-loop|081 + block $__inlined_func$~lib/array/Array#findIndex103 + loop $for-loop|0105 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $57 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $57 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $57 local.get $1 - local.get $2 i32.const 6240 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex80 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findIndex103 + local.get $57 i32.const 1 i32.add - local.set $1 - br $for-loop|081 + local.set $57 + br $for-loop|0105 end end i32.const -1 - local.set $1 + local.set $57 end - local.get $1 + local.get $57 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -20984,55 +20929,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 6272 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 + local.get $1 i32.load offset=12 local.set $0 - block $__inlined_func$~lib/array/Array#findIndex83 - loop $for-loop|084 + block $__inlined_func$~lib/array/Array#findIndex108 + loop $for-loop|0110 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $56 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $56 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $56 local.get $1 - local.get $2 i32.const 6272 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex83 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findIndex108 + local.get $56 i32.const 1 i32.add - local.set $1 - br $for-loop|084 + local.set $56 + br $for-loop|0110 end end i32.const -1 - local.set $1 + local.set $56 end - local.get $1 + local.get $56 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21080,50 +21023,48 @@ global.get $~lib/memory/__stack_pointer i32.const 6304 i32.store offset=8 - i32.const 0 - local.set $1 local.get $0 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex85 - loop $for-loop|086 - local.get $2 + local.set $1 + block $__inlined_func$~lib/array/Array#findIndex112 + loop $for-loop|0114 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $55 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $55 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $55 local.get $0 i32.const 6304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex85 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findIndex112 + local.get $55 i32.const 1 i32.add - local.set $1 - br $for-loop|086 + local.set $55 + br $for-loop|0114 end end i32.const -1 - local.set $1 + local.set $55 end - local.get $1 + local.get $55 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21183,39 +21124,39 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $0 + local.set $1 block $__inlined_func$~lib/array/Array#findLastIndex - loop $for-loop|088 - local.get $0 + loop $for-loop|0118 + local.get $1 i32.const 0 i32.ge_s if local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $2 i32.const 6384 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findLastIndex - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|088 + local.set $1 + br $for-loop|0118 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i if @@ -21233,39 +21174,39 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex89 - loop $for-loop|090 - local.get $0 + local.set $1 + block $__inlined_func$~lib/array/Array#findLastIndex120 + loop $for-loop|0122 + local.get $1 i32.const 0 i32.ge_s if local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $2 i32.const 6416 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex89 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findLastIndex120 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|090 + local.set $1 + br $for-loop|0122 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -21285,39 +21226,39 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex91 - loop $for-loop|092 - local.get $0 + local.set $1 + block $__inlined_func$~lib/array/Array#findLastIndex124 + loop $for-loop|0126 + local.get $1 i32.const 0 i32.ge_s if local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $2 i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex91 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findLastIndex124 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|092 + local.set $1 + br $for-loop|0126 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21337,39 +21278,39 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $1 - block $__inlined_func$~lib/array/Array#findLastIndex93 - loop $for-loop|094 - local.get $1 + local.set $0 + block $__inlined_func$~lib/array/Array#findLastIndex128 + loop $for-loop|0130 + local.get $0 i32.const 0 i32.ge_s if local.get $2 i32.load offset=4 - local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6480 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex93 - local.get $1 + br_if $__inlined_func$~lib/array/Array#findLastIndex128 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|094 + local.set $0 + br $for-loop|0130 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21382,57 +21323,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 6512 - i32.store offset=8 block $__inlined_func$~lib/array/Array#every (result i32) - i32.const 0 - local.set $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6512 + i32.store offset=8 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|095 + loop $for-loop|0133 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $54 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $54 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $7 - local.get $1 local.get $2 + local.get $54 + local.get $1 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/array/Array#every drop - local.get $1 + local.get $54 i32.const 1 i32.add - local.set $1 - br $for-loop|095 + local.set $54 + br $for-loop|0133 end end i32.const 1 @@ -21446,57 +21385,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 6544 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every96 (result i32) - i32.const 0 - local.set $1 - local.get $2 + block $__inlined_func$~lib/array/Array#every135 (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6544 + i32.store offset=8 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|097 + loop $for-loop|0137 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $53 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $53 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $7 - local.get $1 local.get $2 + local.get $53 + local.get $1 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every96 + br_if $__inlined_func$~lib/array/Array#every135 drop - local.get $1 + local.get $53 i32.const 1 i32.add - local.set $1 - br $for-loop|097 + local.set $53 + br $for-loop|0137 end end i32.const 1 @@ -21509,57 +21446,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 6576 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every98 (result i32) - i32.const 0 - local.set $1 - local.get $2 + block $__inlined_func$~lib/array/Array#every139 (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6576 + i32.store offset=8 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|099 + loop $for-loop|0141 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $52 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $52 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $7 - local.get $1 local.get $2 + local.get $52 + local.get $1 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every98 + br_if $__inlined_func$~lib/array/Array#every139 drop - local.get $1 + local.get $52 i32.const 1 i32.add - local.set $1 - br $for-loop|099 + local.set $52 + br $for-loop|0141 end end i32.const 1 @@ -21589,57 +21524,55 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 6608 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every101 (result i32) - i32.const 0 - local.set $1 - local.get $2 + block $__inlined_func$~lib/array/Array#every144 (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6608 + i32.store offset=8 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|0102 + loop $for-loop|0146 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $51 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $51 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $7 - local.get $1 local.get $2 + local.get $51 + local.get $1 i32.const 6608 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every101 + br_if $__inlined_func$~lib/array/Array#every144 drop - local.get $1 + local.get $51 i32.const 1 i32.add - local.set $1 - br $for-loop|0102 + local.set $51 + br $for-loop|0146 end end i32.const 1 @@ -21680,56 +21613,54 @@ local.get $0 call $~lib/array/Array#pop drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6640 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#every103 (result i32) - i32.const 0 - local.set $1 + block $__inlined_func$~lib/array/Array#every148 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6640 + i32.store offset=8 local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|0104 - local.get $2 + local.set $1 + loop $for-loop|0150 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $50 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $50 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $7 - local.get $1 + local.get $2 + local.get $50 local.get $0 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every103 + br_if $__inlined_func$~lib/array/Array#every148 drop - local.get $1 + local.get $50 i32.const 1 i32.add - local.set $1 - br $for-loop|0104 + local.set $50 + br $for-loop|0150 end end i32.const 1 @@ -21775,55 +21706,53 @@ i32.const 3 call $~lib/array/Array#push drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6672 - i32.store offset=8 block $__inlined_func$~lib/array/Array#some (result i32) - i32.const 0 - local.set $1 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6672 + i32.store offset=8 local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|0106 - local.get $2 + local.set $1 + loop $for-loop|0154 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $49 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $49 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $7 - local.get $1 + local.get $2 + local.get $49 local.get $0 i32.const 6672 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop - local.get $1 + local.get $49 i32.const 1 i32.add - local.set $1 - br $for-loop|0106 + local.set $49 + br $for-loop|0154 end end i32.const 0 @@ -21837,56 +21766,54 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 6704 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some107 (result i32) - i32.const 0 - local.set $1 - local.get $2 + block $__inlined_func$~lib/array/Array#some156 (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6704 + i32.store offset=8 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|0108 + loop $for-loop|0158 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $48 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $48 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $7 - local.get $1 local.get $2 + local.get $48 + local.get $1 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some107 + br_if $__inlined_func$~lib/array/Array#some156 drop - local.get $1 + local.get $48 i32.const 1 i32.add - local.set $1 - br $for-loop|0108 + local.set $48 + br $for-loop|0158 end end i32.const 0 @@ -21899,56 +21826,54 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 6736 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some109 (result i32) - i32.const 0 - local.set $1 - local.get $2 + block $__inlined_func$~lib/array/Array#some160 (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6736 + i32.store offset=8 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|0110 + loop $for-loop|0162 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $47 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $47 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $7 - local.get $1 local.get $2 + local.get $47 + local.get $1 i32.const 6736 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some109 + br_if $__inlined_func$~lib/array/Array#some160 drop - local.get $1 + local.get $47 i32.const 1 i32.add - local.set $1 - br $for-loop|0110 + local.set $47 + br $for-loop|0162 end end i32.const 0 @@ -21977,56 +21902,54 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/array/arr - local.tee $2 - i32.store - local.get $0 - i32.const 6768 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some112 (result i32) - i32.const 0 - local.set $1 - local.get $2 + block $__inlined_func$~lib/array/Array#some165 (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/arr + local.tee $1 + i32.store + local.get $0 + i32.const 6768 + i32.store offset=8 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|0113 + loop $for-loop|0167 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $46 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $46 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $7 - local.get $1 local.get $2 + local.get $46 + local.get $1 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some112 + br_if $__inlined_func$~lib/array/Array#some165 drop - local.get $1 + local.get $46 i32.const 1 i32.add - local.set $1 - br $for-loop|0113 + local.set $46 + br $for-loop|0167 end end i32.const 0 @@ -22068,55 +21991,53 @@ local.get $0 call $~lib/array/Array#pop drop - global.get $~lib/memory/__stack_pointer - global.get $std/array/arr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 6800 - i32.store offset=8 - block $__inlined_func$~lib/array/Array#some114 (result i32) - i32.const 0 - local.set $1 + block $__inlined_func$~lib/array/Array#some169 (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6800 + i32.store offset=8 local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|0115 - local.get $2 + local.set $1 + loop $for-loop|0171 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $45 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $45 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $7 - local.get $1 + local.get $2 + local.get $45 local.get $0 i32.const 6800 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some114 + br_if $__inlined_func$~lib/array/Array#some169 drop - local.get $1 + local.get $45 i32.const 1 i32.add - local.set $1 - br $for-loop|0115 + local.set $45 + br $for-loop|0171 end end i32.const 0 @@ -22170,42 +22091,40 @@ global.get $~lib/memory/__stack_pointer i32.const 6832 i32.store offset=8 - i32.const 0 - local.set $1 local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|0117 - local.get $2 + local.set $1 + loop $for-loop|0175 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $44 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $44 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $44 local.get $0 i32.const 6832 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $1 + local.get $44 i32.const 1 i32.add - local.set $1 - br $for-loop|0117 + local.set $44 + br $for-loop|0175 end end global.get $std/array/i @@ -22224,47 +22143,45 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 6864 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|0119 + loop $for-loop|0179 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $43 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $43 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $43 local.get $1 - local.get $2 i32.const 6864 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $1 + local.get $43 i32.const 1 i32.add - local.set $1 - br $for-loop|0119 + local.set $43 + br $for-loop|0179 end end global.get $std/array/i @@ -22299,47 +22216,45 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 6896 i32.store offset=8 - i32.const 0 - local.set $1 - local.get $2 + local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|0122 + loop $for-loop|0184 local.get $0 - local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 local.get $0 - local.get $7 + local.get $2 i32.lt_s select - local.get $1 + local.get $42 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $42 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $42 local.get $1 - local.get $2 i32.const 6896 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $1 + local.get $42 i32.const 1 i32.add - local.set $1 - br $for-loop|0122 + local.set $42 + br $for-loop|0184 end end global.get $std/array/i @@ -22390,42 +22305,40 @@ global.get $~lib/memory/__stack_pointer i32.const 6928 i32.store offset=8 - i32.const 0 - local.set $1 local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|0124 - local.get $2 + local.set $1 + loop $for-loop|0188 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $41 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $41 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $41 local.get $0 i32.const 6928 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $1 + local.get $41 i32.const 1 i32.add - local.set $1 - br $for-loop|0124 + local.set $41 + br $for-loop|0188 end end global.get $std/array/i @@ -22478,42 +22391,40 @@ global.get $~lib/memory/__stack_pointer i32.const 6960 i32.store offset=8 - i32.const 0 - local.set $1 local.get $0 i32.load offset=12 - local.set $2 - loop $for-loop|0127 - local.get $2 + local.set $1 + loop $for-loop|0193 + local.get $1 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $2 + local.get $1 local.get $2 - local.get $7 i32.lt_s select - local.get $1 + local.get $40 i32.gt_s if local.get $0 i32.load offset=4 - local.get $1 + local.get $40 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $40 local.get $0 i32.const 6960 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $1 + local.get $40 i32.const 1 i32.add - local.set $1 - br $for-loop|0127 + local.set $40 + br $for-loop|0193 end end global.get $~lib/memory/__stack_pointer @@ -22533,23 +22444,23 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 loop $for-loop|6 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#pop drop - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|6 end end @@ -22586,87 +22497,85 @@ call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 6992 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $2 i32.const 0 i32.store - local.get $7 - local.get $0 + local.get $2 + local.get $1 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 2 i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $4 i32.store - local.get $8 + local.get $4 i32.load offset=4 - local.set $9 - loop $for-loop|0129 - local.get $7 - local.get $0 + local.set $5 + loop $for-loop|0197 + local.get $2 + local.get $1 i32.load offset=12 - local.tee $10 - local.get $7 - local.get $10 + local.tee $6 + local.get $2 + local.get $6 i32.lt_s select - local.get $1 + local.get $39 i32.gt_s if - local.get $1 + local.get $39 i32.const 2 i32.shl - local.tee $10 - local.get $0 + local.tee $6 + local.get $1 i32.load offset=4 i32.add i32.load - local.set $11 + local.set $7 i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $10 + local.get $5 + local.get $6 i32.add - local.get $11 + local.get $7 + local.get $39 local.get $1 - local.get $0 i32.const 6992 i32.load call_indirect $0 (type $i32_i32_i32_=>_f32) f32.store - local.get $1 + local.get $39 i32.const 1 i32.add - local.set $1 - br $for-loop|0129 + local.set $39 + br $for-loop|0197 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store offset=12 - local.get $8 + local.get $4 i32.load offset=12 i32.const 4 i32.ne @@ -22678,10 +22587,10 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $4 i32.const 0 call $~lib/array/Array#__get - local.set $6 + local.set $12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -22690,7 +22599,7 @@ i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s - local.get $6 + local.get $12 f32.ne if i32.const 0 @@ -23024,56 +22933,52 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 7248 i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 + local.get $0 i32.load offset=12 - local.set $7 - loop $for-loop|0136 - local.get $7 - local.get $2 + local.set $1 + loop $for-loop|0206 + local.get $1 + local.get $0 i32.load offset=12 - local.tee $8 - local.get $7 - local.get $8 + local.tee $2 + local.get $1 + local.get $2 i32.lt_s select - local.get $1 + local.get $38 i32.gt_s if - local.get $2 + local.get $0 i32.load offset=4 - local.get $1 + local.get $38 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $8 - local.get $1 + local.get $24 local.get $2 + local.get $38 + local.get $0 i32.const 7248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $24 + local.get $38 i32.const 1 i32.add - local.set $1 - br $for-loop|0136 + local.set $38 + br $for-loop|0206 end end - local.get $0 + local.get $24 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23089,53 +22994,51 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7280 i32.store offset=8 - i32.const 0 - local.set $1 i32.const 4 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $7 - loop $for-loop|0138 - local.get $7 + local.set $2 + loop $for-loop|0210 local.get $2 + local.get $1 i32.load offset=12 - local.tee $8 - local.get $7 - local.get $8 + local.tee $4 + local.get $2 + local.get $4 i32.lt_s select - local.get $1 + local.get $37 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $37 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $4 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $8 + local.get $4 + local.get $37 local.get $1 - local.get $2 i32.const 7280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $0 - local.get $1 + local.get $37 i32.const 1 i32.add - local.set $1 - br $for-loop|0138 + local.set $37 + br $for-loop|0210 end end local.get $0 @@ -23154,56 +23057,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7312 i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $7 - loop $for-loop|0140 - local.get $7 - local.get $2 + local.set $0 + loop $for-loop|0214 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $8 - local.get $7 - local.get $8 + local.tee $2 + local.get $0 + local.get $2 i32.lt_s select - local.get $1 + local.get $36 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $36 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $8 - local.get $1 + local.get $23 local.get $2 + local.get $36 + local.get $1 i32.const 7312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $23 + local.get $36 i32.const 1 i32.add - local.set $1 - br $for-loop|0140 + local.set $36 + br $for-loop|0214 end end - local.get $0 + local.get $23 i32.eqz if i32.const 0 @@ -23216,56 +23115,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7344 i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $7 - loop $for-loop|0142 - local.get $7 - local.get $2 + local.set $0 + loop $for-loop|0218 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $8 - local.get $7 - local.get $8 + local.tee $2 + local.get $0 + local.get $2 i32.lt_s select - local.get $1 + local.get $35 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $35 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $8 - local.get $1 + local.get $22 local.get $2 + local.get $35 + local.get $1 i32.const 7344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $22 + local.get $35 i32.const 1 i32.add - local.set $1 - br $for-loop|0142 + local.set $35 + br $for-loop|0218 end end - local.get $0 + local.get $22 if i32.const 0 i32.const 1552 @@ -23277,56 +23172,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7376 i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $7 - loop $for-loop|0144 - local.get $7 - local.get $2 + local.set $0 + loop $for-loop|0222 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $8 - local.get $7 - local.get $8 + local.tee $2 + local.get $0 + local.get $2 i32.lt_s select - local.get $1 + local.get $34 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $34 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $8 - local.get $1 + local.get $21 local.get $2 + local.get $34 + local.get $1 i32.const 7376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $21 + local.get $34 i32.const 1 i32.add - local.set $1 - br $for-loop|0144 + local.set $34 + br $for-loop|0222 end end - local.get $0 + local.get $21 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23358,56 +23249,52 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7408 i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $7 - loop $for-loop|0147 - local.get $7 - local.get $2 + local.set $0 + loop $for-loop|0227 + local.get $0 + local.get $1 i32.load offset=12 - local.tee $8 - local.get $7 - local.get $8 + local.tee $2 + local.get $0 + local.get $2 i32.lt_s select - local.get $1 + local.get $33 i32.gt_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $33 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $8 - local.get $1 + local.get $20 local.get $2 + local.get $33 + local.get $1 i32.const 7408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $20 + local.get $33 i32.const 1 i32.add - local.set $1 - br $for-loop|0147 + local.set $33 + br $for-loop|0227 end end - local.get $0 + local.get $20 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23450,56 +23337,52 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 7440 i32.store offset=8 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - local.get $2 + local.get $0 i32.load offset=12 - local.set $7 - loop $for-loop|0149 - local.get $7 - local.get $2 + local.set $1 + loop $for-loop|0231 + local.get $1 + local.get $0 i32.load offset=12 - local.tee $8 - local.get $7 - local.get $8 + local.tee $2 + local.get $1 + local.get $2 i32.lt_s select - local.get $1 + local.get $32 i32.gt_s if - local.get $2 + local.get $0 i32.load offset=4 - local.get $1 + local.get $32 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $8 - local.get $1 + local.get $19 local.get $2 + local.get $32 + local.get $0 i32.const 7440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $19 + local.get $32 i32.const 1 i32.add - local.set $1 - br $for-loop|0149 + local.set $32 + br $for-loop|0231 end end - local.get $0 + local.get $19 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -23546,49 +23429,47 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 7472 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $2 + local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0151 - local.get $1 + local.set $2 + loop $for-loop|0235 + local.get $2 i32.const 0 i32.ge_s if - local.get $2 + local.get $0 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $7 + local.get $18 local.get $1 local.get $2 + local.get $0 i32.const 7472 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $18 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|0151 + local.set $2 + br $for-loop|0235 end end - local.get $0 + local.get $18 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23604,49 +23485,49 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $4 i32.store local.get $0 i32.const 7504 i32.store offset=8 i32.const 4 - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0153 - local.get $1 + local.set $2 + loop $for-loop|0239 + local.get $2 i32.const 0 i32.ge_s if - local.get $2 + local.get $4 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $7 local.get $1 + local.get $0 local.get $2 + local.get $4 i32.const 7504 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $1 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|0153 + local.set $2 + br $for-loop|0239 end end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23662,49 +23543,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7536 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0155 - local.get $1 + local.set $2 + loop $for-loop|0243 + local.get $2 i32.const 0 i32.ge_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $17 local.get $0 - local.get $7 - local.get $1 local.get $2 + local.get $1 i32.const 7536 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $17 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|0155 + local.set $2 + br $for-loop|0243 end end - local.get $0 + local.get $17 i32.eqz if i32.const 0 @@ -23717,49 +23596,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7568 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0157 - local.get $1 + local.set $2 + loop $for-loop|0247 + local.get $2 i32.const 0 i32.ge_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $16 local.get $0 - local.get $7 - local.get $1 local.get $2 + local.get $1 i32.const 7568 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $16 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|0157 + local.set $2 + br $for-loop|0247 end end - local.get $0 + local.get $16 if i32.const 0 i32.const 1552 @@ -23771,49 +23648,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7600 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0159 - local.get $1 + local.set $2 + loop $for-loop|0251 + local.get $2 i32.const 0 i32.ge_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $15 local.get $0 - local.get $7 - local.get $1 local.get $2 + local.get $1 i32.const 7600 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $15 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|0159 + local.set $2 + br $for-loop|0251 end end - local.get $0 + local.get $15 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23845,49 +23720,47 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store local.get $0 i32.const 7632 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $2 + local.get $1 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0162 - local.get $1 + local.set $2 + loop $for-loop|0256 + local.get $2 i32.const 0 i32.ge_s if - local.get $2 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $0 i32.const 4 global.set $~argumentsLength + local.get $14 local.get $0 - local.get $7 - local.get $1 local.get $2 + local.get $1 i32.const 7632 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $14 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|0162 + local.set $2 + br $for-loop|0256 end end - local.get $0 + local.get $14 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23930,49 +23803,47 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 7664 i32.store offset=8 - i32.const 0 - local.set $0 - local.get $2 + local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0164 - local.get $1 + local.set $2 + loop $for-loop|0260 + local.get $2 i32.const 0 i32.ge_s if - local.get $2 + local.get $0 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $0 - local.get $7 + local.get $13 local.get $1 local.get $2 + local.get $0 i32.const 7664 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $13 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|0164 + local.set $2 + br $for-loop|0260 end end - local.get $0 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -24031,9 +23902,58 @@ i32.const 3 call $~lib/array/Array#push drop + i64.const -7046029254386353131 call $~lib/bindings/Math/random i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom + local.tee $11 + local.get $11 + i64.eqz + select + local.tee $11 + i64.const 33 + i64.shr_u + local.get $11 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $11 + i64.const 33 + i64.shr_u + local.get $11 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $11 + i64.const 33 + i64.shr_u + local.get $11 + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $11 + i64.const 33 + i64.shr_u + local.get $11 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $11 + i64.const 33 + i64.shr_u + local.get $11 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $11 + i64.const 33 + i64.shr_u + local.get $11 + i64.xor + global.set $~lib/math/random_state1_64 + i32.const 1 + global.set $~lib/math/random_seeded global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 2 @@ -24470,12 +24390,12 @@ i32.const 11 i32.const 8112 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=112 i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24483,78 +24403,76 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of148 - block $0of149 - block $outOfRange50 + block $1of139 + block $0of140 + block $outOfRange41 global.get $~argumentsLength - br_table $0of149 $1of148 $outOfRange50 + br_table $0of140 $1of139 $outOfRange41 end unreachable end i32.const 8208 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8208 i32.store end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $1 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 11 - i32.const 8240 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 block $__inlined_func$std/array/isArraysEqual (result i32) - i32.const 0 - local.set $0 - i32.const 0 + i32.const 8 + i32.const 3 + i32.const 11 + i32.const 8240 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=8 + i32.const 0 + local.get $0 i32.load offset=12 - local.tee $7 - local.get $2 + local.tee $2 + local.get $1 i32.load offset=12 i32.ne br_if $__inlined_func$std/array/isArraysEqual drop i32.const 1 + local.get $0 local.get $1 - local.get $2 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|028 - local.get $0 - local.get $7 - i32.lt_s + loop $for-loop|029 + local.get $2 + local.get $62 + i32.gt_s if - local.get $1 local.get $0 + local.get $62 call $~lib/array/Array#__get - local.tee $5 - local.get $5 + local.tee $10 + local.get $10 f64.ne if (result i32) - local.get $2 - local.get $0 + local.get $1 + local.get $62 call $~lib/array/Array#__get - local.tee $5 - local.get $5 + local.tee $10 + local.get $10 f64.ne else i32.const 0 @@ -24562,21 +24480,21 @@ i32.eqz if i32.const 0 - local.get $1 local.get $0 + local.get $62 call $~lib/array/Array#__get - local.get $2 - local.get $0 + local.get $1 + local.get $62 call $~lib/array/Array#__get f64.ne br_if $__inlined_func$std/array/isArraysEqual drop end - local.get $0 + local.get $62 i32.const 1 i32.add - local.set $0 - br $for-loop|028 + local.set $62 + br $for-loop|029 end end i32.const 1 @@ -24596,12 +24514,12 @@ i32.const 3 i32.const 8336 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=116 i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24609,29 +24527,29 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1212 - block $0of1213 - block $outOfRange214 + block $1of1309 + block $0of1310 + block $outOfRange311 global.get $~argumentsLength - br_table $0of1213 $1of1212 $outOfRange214 + br_table $0of1310 $1of1309 $outOfRange311 end unreachable end i32.const 8384 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8384 i32.store end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $1 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24642,12 +24560,12 @@ i32.const 3 i32.const 8416 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -24700,7 +24618,7 @@ i32.const 3 i32.const 8592 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=124 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -24708,7 +24626,7 @@ i32.const 3 i32.const 8624 call $~lib/rt/__newArray - local.tee $7 + local.tee $1 i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -24716,7 +24634,7 @@ i32.const 3 i32.const 8656 call $~lib/rt/__newArray - local.tee $8 + local.tee $2 i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24724,7 +24642,7 @@ i32.const 3 i32.const 8688 call $~lib/rt/__newArray - local.tee $9 + local.tee $4 i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24732,48 +24650,48 @@ i32.const 3 i32.const 8736 call $~lib/rt/__newArray - local.tee $10 + local.tee $5 i32.store offset=140 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $11 + local.tee $6 i32.store offset=144 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $12 + local.tee $7 i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $0 + local.tee $8 i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $1 + local.tee $9 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray local.tee $13 i32.store offset=160 - local.get $2 + local.get $0 call $std/array/assertSortedDefault - local.get $7 + local.get $1 call $std/array/assertSortedDefault i32.const 1 i32.const 2 i32.const 3 i32.const 8816 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=8 - local.get $7 - local.get $2 + local.get $1 + local.get $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -24785,19 +24703,19 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $2 call $std/array/assertSortedDefault i32.const 2 i32.const 2 i32.const 3 i32.const 8848 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=8 - local.get $8 local.get $2 + local.get $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -24809,10 +24727,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $4 call $std/array/assertSortedDefault - local.get $9 - local.get $10 + local.get $4 + local.get $5 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -24824,10 +24742,10 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $6 call $std/array/assertSortedDefault - local.get $11 - local.get $10 + local.get $6 + local.get $5 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24839,10 +24757,10 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $7 call $std/array/assertSortedDefault - local.get $12 - local.get $10 + local.get $7 + local.get $5 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24854,10 +24772,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 call $std/array/assertSortedDefault - local.get $0 - local.get $10 + local.get $8 + local.get $5 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24869,10 +24787,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 call $std/array/assertSortedDefault - local.get $1 - local.get $10 + local.get $9 + local.get $5 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24886,7 +24804,210 @@ end local.get $13 call $std/array/assertSortedDefault - call $std/array/assertStableSortedForComplexObjects + block $__inlined_func$std/array/assertStableSortedForComplexObjects + 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 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + global.get $std/array/inputStabArr + local.tee $2 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + i32.const 0 + local.get $2 + i32.load offset=12 + local.tee $4 + local.get $4 + i32.const 0 + i32.gt_s + select + local.set $5 + local.get $0 + local.get $4 + local.get $5 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $4 + i32.const 2 + i32.const 20 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + local.set $0 + local.get $2 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.set $2 + local.get $4 + i32.const 2 + i32.shl + local.set $4 + loop $while-continue|00 + local.get $4 + local.get $64 + i32.gt_u + if + local.get $0 + local.get $64 + i32.add + local.get $2 + local.get $64 + i32.add + i32.load + local.tee $5 + i32.store + local.get $5 + if + local.get $6 + local.get $5 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $64 + i32.const 4 + i32.add + local.set $64 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=4 + local.get $6 + i32.load offset=4 + local.get $6 + i32.load offset=12 + i32.const 8880 + call $~lib/util/sort/SORT + local.get $1 + local.get $6 + i32.store offset=12 + i32.const 1 + local.set $64 + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + loop $for-loop|02 + local.get $0 + local.get $63 + i32.gt_s + if + block $for-break0 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $63 + call $~lib/array/Array#__get + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $63 + call $~lib/array/Array#__get + local.tee $2 + i32.store offset=20 + local.get $1 + i32.load + local.get $2 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + local.get $1 + i32.load offset=4 + local.get $2 + i32.load offset=4 + i32.ne + end + if + i32.const 0 + local.set $64 + br $for-break0 + end + local.get $63 + i32.const 1 + i32.add + local.set $63 + br $for-loop|02 + end + end + end + local.get $64 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1042 + 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 + br $__inlined_func$std/array/assertStableSortedForComplexObjects + end + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createRandomOrderedArray @@ -24929,7 +25050,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -24941,7 +25062,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $2 i64.const 0 @@ -24968,23 +25089,24 @@ i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $4 i32.store offset=4 - local.get $7 + local.get $4 i32.const 0 i32.const 32 call $~lib/memory/memory.fill local.get $2 - local.get $7 + local.get $4 i32.store - local.get $7 + local.get $4 if local.get $2 - local.get $7 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + local.get $4 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $2 - local.get $7 + local.get $4 i32.store offset=4 local.get $2 i32.const 32 @@ -24999,8 +25121,8 @@ local.get $1 local.get $2 i32.store - loop $for-loop|0215 - local.get $3 + loop $for-loop|0313 + local.get $31 i32.const 2 i32.lt_s if @@ -25012,18 +25134,18 @@ local.get $1 i32.const 0 i32.const 1 - local.get $3 + local.get $31 i32.sub call $~lib/array/Array#__set local.get $2 - local.get $3 + local.get $31 local.get $1 call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 + local.get $31 i32.const 1 i32.add - local.set $3 - br $for-loop|0215 + local.set $31 + br $for-loop|0313 end end global.get $~lib/memory/__stack_pointer @@ -25040,7 +25162,7 @@ call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $61 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25048,79 +25170,79 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i64.const 0 i64.store - local.get $3 + local.get $2 i32.const 16 i32.const 29 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 2048 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $4 i32.store offset=4 - local.get $7 + local.get $4 i32.const 0 i32.const 2048 call $~lib/memory/memory.fill - local.get $3 - local.get $7 + local.get $2 + local.get $4 i32.store - local.get $7 + local.get $4 if - local.get $3 - local.get $7 + local.get $2 + local.get $4 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 - local.get $7 + local.get $2 + local.get $4 i32.store offset=4 - local.get $3 + local.get $2 i32.const 2048 i32.store offset=8 - local.get $3 + local.get $2 i32.const 512 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $2 - local.get $3 i32.store - loop $for-loop|00 - local.get $0 + loop $for-loop|039 + local.get $61 i32.const 512 i32.lt_s if @@ -25131,20 +25253,20 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 4 i32.const 28 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 511 - local.get $0 + local.get $61 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -25152,29 +25274,29 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $3 - local.get $0 local.get $2 + local.get $61 + local.get $1 call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 + local.get $61 i32.const 1 i32.add - local.set $0 - br $for-loop|00 + local.set $61 + br $for-loop|039 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 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 9072 i32.store offset=8 - local.get $3 + local.get $2 i32.const 9072 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -25183,7 +25305,7 @@ i32.const 31 i32.const 9264 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 7 @@ -25191,12 +25313,12 @@ i32.const 31 i32.const 9312 call $~lib/rt/__newArray - local.tee $3 + local.tee $2 i32.store offset=152 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $0 + local.set $62 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25204,22 +25326,22 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of151 - block $0of152 - block $outOfRange53 + block $1of145 + block $0of146 + block $outOfRange47 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of152 $1of151 $outOfRange53 + br_table $0of146 $1of145 $outOfRange47 end unreachable end i32.const 9360 - local.set $0 + local.set $62 global.get $~lib/memory/__stack_pointer i32.const 9360 i32.store @@ -25231,63 +25353,62 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=12 - local.get $0 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $2 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $62 + call $~lib/util/sort/SORT + 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 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store i32.const 1 - local.set $2 - local.get $1 + local.set $1 + local.get $0 i32.load offset=12 - local.set $7 - loop $for-loop|054 - local.get $2 - local.get $7 + local.set $4 + loop $for-loop|048 + local.get $1 + local.get $4 i32.lt_s if + local.get $0 local.get $1 - local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $8 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 i32.store + local.get $0 local.get $1 - local.get $2 call $~lib/array/Array#__get - local.set $9 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $6 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $8 - local.get $9 - local.get $0 + local.get $5 + local.get $6 + local.get $62 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -25300,11 +25421,11 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|054 + local.set $1 + br $for-loop|048 end end global.get $~lib/memory/__stack_pointer @@ -25331,8 +25452,6 @@ i32.add global.set $~lib/memory/__stack_pointer block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (result i32) - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25340,56 +25459,17 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner1 - block $folding-inner01 - local.get $1 - i32.load offset=12 - local.tee $2 - local.get $3 - i32.load offset=12 - i32.ne - br_if $folding-inner01 - local.get $1 - local.get $3 - i32.eq - br_if $folding-inner1 - loop $for-loop|042 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $3 - local.get $0 - call $~lib/array/Array#__get - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $7 - local.get $8 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner01 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|042 - end - end - br $folding-inner1 - end + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=12 + local.tee $1 + local.get $2 + i32.load offset=12 + i32.ne + if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -25397,6 +25477,55 @@ i32.const 0 br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> end + local.get $0 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> + end + loop $for-loop|045 + local.get $1 + local.get $30 + i32.gt_s + if + local.get $0 + local.get $30 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $2 + local.get $30 + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $4 + local.get $5 + 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 0 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> + end + local.get $30 + i32.const 1 + i32.add + local.set $30 + br $for-loop|045 + end + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -25413,17 +25542,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - local.set $2 - local.get $0 + local.tee $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -25432,10 +25558,10 @@ i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $8 + local.tee $5 i32.store - loop $for-loop|044 - local.get $2 + loop $for-loop|049 + local.get $25 i32.const 400 i32.lt_s if @@ -25443,9 +25569,9 @@ f64.const 32 f64.mul i32.trunc_f64_s - local.set $9 + local.set $6 i32.const 0 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -25453,7 +25579,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -25466,13 +25592,13 @@ local.get $1 i32.const 9232 i32.store - loop $for-loop|04 - local.get $3 - local.get $9 + loop $for-loop|023 + local.get $2 + local.get $6 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $10 + local.tee $7 i32.const 7696 i32.store offset=4 call $~lib/math/NativeMath.random @@ -25487,7 +25613,7 @@ f64.mul f64.floor i32.trunc_f64_s - local.set $11 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25495,7 +25621,9 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 + local.get $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -25504,7 +25632,7 @@ i32.load i32.const 1 i32.shr_u - local.get $11 + local.get $8 i32.le_u if global.get $~lib/memory/__stack_pointer @@ -25512,17 +25640,17 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $1 + local.set $0 br $__inlined_func$~lib/string/String#charAt end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $11 + local.get $0 + local.get $8 i32.const 1 i32.shl i32.const 7696 @@ -25535,19 +25663,19 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $10 local.get $0 + i32.store offset=4 + local.get $7 local.get $1 + local.get $0 call $~lib/string/String.__concat local.tee $0 i32.store - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|04 + local.set $2 + br $for-loop|023 end end global.get $~lib/memory/__stack_pointer @@ -25557,27 +25685,28 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $8 - local.get $2 + local.get $5 + local.get $25 local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 + local.get $25 i32.const 1 i32.add - local.set $2 - br $for-loop|044 + local.set $25 + br $for-loop|049 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $4 + local.get $5 i32.store offset=156 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25585,28 +25714,28 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of146 - block $0of147 - block $outOfRange48 + block $1of152 + block $0of153 + block $outOfRange54 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of147 $1of146 $outOfRange48 + br_table $0of153 $1of152 $outOfRange54 end unreachable end i32.const 9392 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 9392 i32.store end - local.get $8 - local.get $1 + local.get $5 + local.get $0 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25617,40 +25746,39 @@ i32.const 35 i32.const 9424 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 local.get $1 + i32.store offset=164 + global.get $~lib/memory/__stack_pointer i32.const 9520 i32.store offset=168 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $3 + local.set $61 + local.get $1 + i32.load offset=4 + local.set $4 local.get $1 + i32.load offset=12 + 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 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinBooleanArray - local.get $7 + local.get $1 i32.const 1 i32.sub - local.tee $7 + local.tee $1 i32.const 0 i32.lt_s if @@ -25659,130 +25787,131 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $1 + local.set $2 br $__inlined_func$~lib/util/string/joinBooleanArray end - block $folding-inner06 - local.get $7 - i32.eqz + local.get $1 + i32.eqz + if + i32.const 9456 + i32.const 9488 + local.get $4 + i32.load8_u + select + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinBooleanArray + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 5 + i32.add + i32.mul + i32.const 5 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $for-loop|149 + local.get $1 + local.get $61 + i32.gt_s if + local.get $4 + local.get $61 + i32.add + i32.load8_u + local.tee $7 + i32.eqz + i32.const 4 + i32.add + local.set $8 + local.get $0 + i32.const 1 + i32.shl + local.get $2 + i32.add i32.const 9456 i32.const 9488 - local.get $2 - i32.load8_u - select - local.set $1 - br $folding-inner06 - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $8 - i32.const 5 - i32.add - i32.mul - i32.const 5 - i32.add - local.tee $9 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|18 - local.get $3 local.get $7 - i32.lt_s + select + local.get $8 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + local.get $5 if - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.tee $10 - i32.eqz - i32.const 4 - i32.add - local.set $11 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add - i32.const 9456 - i32.const 9488 - local.get $10 - select - local.get $11 + i32.const 9520 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $11 + local.get $5 i32.add local.set $0 - local.get $8 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $8 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $8 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|18 end + local.get $61 + i32.const 1 + i32.add + local.set $61 + br $for-loop|149 end + end + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.tee $1 + i32.eqz + i32.const 4 + i32.add + local.set $4 + local.get $0 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 9456 + i32.const 9488 + local.get $1 + select + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $6 + local.get $0 + local.get $4 + i32.add + local.tee $0 + i32.gt_s + if local.get $2 - local.get $7 - i32.add - i32.load8_u - local.tee $2 - i32.eqz - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9456 - i32.const 9488 - local.get $2 - select - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 local.get $0 - local.get $3 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner06 - end + call $~lib/string/String#substring + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -25796,12 +25925,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $2 i32.store local.get $0 i32.const 9552 i32.store offset=8 - local.get $1 + local.get $2 i32.const 9552 call $~lib/string/String.__eq i32.eqz @@ -25966,8 +26095,11 @@ i32.const 9232 i32.store offset=168 local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 i32.const 9232 - call $~lib/array/Array<~lib/string/String|null>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -26121,7 +26253,7 @@ i32.const 3 i32.const 13424 call $~lib/rt/__newArray - local.tee $3 + local.tee $4 i32.store offset=144 local.get $0 call $~lib/array/Array#toString @@ -26188,7 +26320,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 call $~lib/array/Array#toString local.set $0 global.get $~lib/memory/__stack_pointer @@ -26215,52 +26347,52 @@ i32.const 36 i32.const 13552 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 + local.tee $0 local.get $1 + i32.store offset=164 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 9520 i32.store - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $3 + local.set $62 + local.get $1 + i32.load offset=4 + local.set $4 local.get $1 + i32.load offset=12 + local.set $1 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $7 + local.get $1 i32.const 1 i32.sub - local.tee $7 + local.tee $1 i32.const 0 i32.lt_s if @@ -26269,102 +26401,103 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $1 + local.set $2 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner010 - local.get $7 - i32.eqz + local.get $1 + i32.eqz + if + local.get $4 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $for-loop|050 + local.get $1 + local.get $62 + i32.gt_s if + local.get $0 + i32.const 1 + i32.shl local.get $2 + i32.add + local.get $4 + local.get $62 + i32.add i32.load8_s - call $~lib/util/number/itoa32 - local.set $1 - br $folding-inner010 - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $8 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $9 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|012 - local.get $3 - local.get $7 - i32.lt_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $5 if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $2 - local.get $3 i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + i32.const 9520 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy local.get $0 + local.get $5 i32.add local.set $0 - local.get $8 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $8 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $8 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|012 end + local.get $62 + i32.const 1 + i32.add + local.set $62 + br $for-loop|050 end - local.get $9 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add + end + local.get $6 + local.get $0 + i32.const 1 + i32.shl + local.get $2 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if local.get $2 - local.get $7 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner010 - end + call $~lib/string/String#substring + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -26381,13 +26514,12 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 + local.get $2 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 13584 i32.store offset=8 - local.get $1 + local.get $2 i32.const 13584 call $~lib/string/String.__eq i32.eqz @@ -26404,52 +26536,52 @@ i32.const 9 i32.const 13616 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=164 + local.tee $0 local.get $1 + i32.store offset=164 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 9520 i32.store - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $3 + local.set $62 + local.get $1 + i32.load offset=4 + local.set $4 local.get $1 + i32.load offset=12 + local.set $1 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $7 + local.get $1 i32.const 1 i32.sub - local.tee $7 + local.tee $1 i32.const 0 i32.lt_s if @@ -26458,106 +26590,107 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $1 + local.set $2 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner015 - local.get $7 - i32.eqz + local.get $1 + i32.eqz + if + local.get $4 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $for-loop|051 + local.get $1 + local.get $62 + i32.gt_s if + local.get $0 + i32.const 1 + i32.shl local.get $2 + i32.add + local.get $62 + i32.const 1 + i32.shl + local.get $4 + i32.add i32.load16_u - call $~lib/util/number/utoa32 - local.set $1 - br $folding-inner015 - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $8 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $9 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|017 - local.get $3 - local.get $7 - i32.lt_s + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $5 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add - local.get $3 + i32.const 9520 + local.get $5 i32.const 1 i32.shl - local.get $2 - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered + call $~lib/memory/memory.copy local.get $0 + local.get $5 i32.add local.set $0 - local.get $8 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $8 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $8 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|017 end + local.get $62 + i32.const 1 + i32.add + local.set $62 + br $for-loop|051 end - local.get $9 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $7 - i32.const 1 - i32.shl + end + local.get $6 + local.get $0 + i32.const 1 + i32.shl + local.get $2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if local.get $2 - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner015 - end + call $~lib/string/String#substring + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -26574,13 +26707,12 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 + local.get $2 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 13648 i32.store offset=8 - local.get $1 + local.get $2 i32.const 13648 call $~lib/string/String.__eq i32.eqz @@ -26609,7 +26741,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -26625,10 +26757,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 13744 i32.store offset=8 local.get $0 @@ -26660,7 +26791,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -26669,339 +26800,19 @@ i32.const 9520 i32.store local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $7 - i32.const 0 + call $~lib/array/Array#join local.set $0 - i32.const 0 - local.set $3 - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $1 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner019 - local.get $7 - i32.eqz - if - local.get $2 - i64.load - i64.extend32_s - 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 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $4 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9824 - local.set $1 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $4 - i64.sub - local.get $4 - local.get $4 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $0 - select - local.tee $4 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.wrap_i64 - local.tee $2 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $0 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $2 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $4 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $4 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $4 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $4 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $4 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $4 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $4 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $4 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $4 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $4 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $0 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $4 - local.get $2 - 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 - end - br $folding-inner019 - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $8 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $9 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|021 - local.get $3 - local.get $7 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $3 - i32.const 3 - i32.shl - local.get $2 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $8 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $8 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $8 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|021 - end - end - local.get $9 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $7 - i32.const 3 - i32.shl - local.get $2 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner019 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 13888 i32.store offset=8 - local.get $1 + local.get $0 i32.const 13888 call $~lib/string/String.__eq i32.eqz @@ -27111,7 +26922,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -27119,14 +26930,14 @@ local.get $0 i32.const 9520 i32.store + i32.const 0 + local.set $62 local.get $1 i32.load offset=4 - local.set $2 + local.set $4 local.get $1 i32.load offset=12 local.set $1 - i32.const 0 - local.set $3 local.get $0 i32.const 12 i32.sub @@ -27134,7 +26945,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -27146,7 +26957,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s if @@ -27155,14 +26966,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 + local.set $2 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.load local.tee $0 i32.store @@ -27173,7 +26984,7 @@ else i32.const 9232 end - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -27181,7 +26992,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end i32.const 9232 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 9232 i32.store offset=4 @@ -27189,74 +27000,74 @@ i32.load i32.const 1 i32.shr_u - local.set $7 - loop $for-loop|024 - local.get $1 - local.get $3 + local.set $1 + loop $for-loop|052 + local.get $0 + local.get $62 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $62 i32.const 2 i32.shl - local.get $2 + local.get $4 i32.add i32.load - local.tee $8 + local.tee $5 i32.store - local.get $8 + local.get $5 if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 call $~lib/array/Array#toString - local.set $8 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 i32.store offset=8 - local.get $0 - local.get $8 + local.get $2 + local.get $5 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $7 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 9520 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $3 + local.get $62 i32.const 1 i32.add - local.set $3 - br $for-loop|024 + local.set $62 + br $for-loop|052 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $4 i32.add i32.load - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/array/Array#toString - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 + local.get $2 local.get $0 - local.get $1 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27269,13 +27080,12 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.get $2 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 14304 i32.store offset=8 - local.get $0 + local.get $2 i32.const 14304 call $~lib/string/String.__eq i32.eqz @@ -27326,7 +27136,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -27334,14 +27144,14 @@ local.get $0 i32.const 9520 i32.store + i32.const 0 + local.set $62 local.get $1 i32.load offset=4 - local.set $2 + local.set $4 local.get $1 i32.load offset=12 local.set $1 - i32.const 0 - local.set $3 local.get $0 i32.const 12 i32.sub @@ -27349,7 +27159,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -27361,7 +27171,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s if @@ -27370,14 +27180,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 + local.set $2 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.load local.tee $0 i32.store @@ -27388,7 +27198,7 @@ else i32.const 9232 end - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -27396,7 +27206,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end i32.const 9232 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 9232 i32.store offset=4 @@ -27404,74 +27214,74 @@ i32.load i32.const 1 i32.shr_u - local.set $7 - loop $for-loop|027 - local.get $1 - local.get $3 + local.set $1 + loop $for-loop|053 + local.get $0 + local.get $62 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $62 i32.const 2 i32.shl - local.get $2 + local.get $4 i32.add i32.load - local.tee $8 + local.tee $5 i32.store - local.get $8 + local.get $5 if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 call $~lib/array/Array#toString - local.set $8 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 i32.store offset=8 - local.get $0 - local.get $8 + local.get $2 + local.get $5 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $7 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 9520 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $3 + local.get $62 i32.const 1 i32.add - local.set $3 - br $for-loop|027 + local.set $62 + br $for-loop|053 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $4 i32.add i32.load - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/array/Array#toString - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 + local.get $2 local.get $0 - local.get $1 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27484,13 +27294,12 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.get $2 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 14304 i32.store offset=8 - local.get $0 + local.get $2 i32.const 14304 call $~lib/string/String.__eq i32.eqz @@ -27549,7 +27358,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -27557,14 +27366,14 @@ local.get $0 i32.const 9520 i32.store + i32.const 0 + local.set $62 local.get $1 i32.load offset=4 - local.set $2 + local.set $4 local.get $1 i32.load offset=12 local.set $1 - i32.const 0 - local.set $3 local.get $0 i32.const 12 i32.sub @@ -27572,7 +27381,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -27584,7 +27393,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s if @@ -27593,14 +27402,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 + local.set $2 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.load local.tee $0 i32.store @@ -27611,7 +27420,7 @@ else i32.const 9232 end - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -27619,7 +27428,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end i32.const 9232 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 9232 i32.store offset=4 @@ -27627,74 +27436,74 @@ i32.load i32.const 1 i32.shr_u - local.set $7 - loop $for-loop|030 - local.get $1 - local.get $3 + local.set $1 + loop $for-loop|054 + local.get $0 + local.get $62 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $62 i32.const 2 i32.shl - local.get $2 + local.get $4 i32.add i32.load - local.tee $8 + local.tee $5 i32.store - local.get $8 + local.get $5 if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 call $~lib/array/Array<~lib/array/Array>#toString - local.set $8 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 i32.store offset=8 - local.get $0 - local.get $8 + local.get $2 + local.get $5 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $7 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 9520 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end - local.get $3 + local.get $62 i32.const 1 i32.add - local.set $3 - br $for-loop|030 + local.set $62 + br $for-loop|054 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $4 i32.add i32.load - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/array/Array<~lib/array/Array>#toString - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 + local.get $2 local.get $0 - local.get $1 call $~lib/string/String.__concat - local.tee $0 + local.tee $2 i32.store offset=4 end global.get $~lib/memory/__stack_pointer @@ -27707,13 +27516,12 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.get $2 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 13008 i32.store offset=8 - local.get $0 + local.get $2 i32.const 13008 call $~lib/string/String.__eq i32.eqz @@ -27776,9 +27584,9 @@ global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/array/Array<~lib/array/Array>#flat - local.tee $1 + local.tee $0 i32.store offset=128 - local.get $1 + local.get $0 i32.load offset=12 i32.const 10 i32.ne @@ -27791,16 +27599,16 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 loop $for-loop|7 - local.get $0 + local.get $2 i32.const 10 i32.lt_s if - local.get $1 local.get $0 + local.get $2 call $~lib/array/Array#__get - local.get $0 + local.get $2 i32.ne if i32.const 0 @@ -27810,10 +27618,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|7 end end @@ -27866,12 +27674,6 @@ local.get $1 i32.store offset=140 global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - i32.const 0 - local.set $0 - i32.const 0 - local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -27879,148 +27681,148 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store local.get $1 i32.load offset=4 - local.set $8 + local.set $2 local.get $1 i32.load offset=12 local.set $1 - loop $for-loop|0217 + loop $for-loop|0317 local.get $1 - local.get $3 + local.get $60 i32.gt_s if - local.get $3 + local.get $60 i32.const 2 i32.shl - local.get $8 + local.get $2 i32.add i32.load - local.tee $9 + local.tee $4 if (result i32) - local.get $9 + local.get $4 i32.load offset=12 else i32.const 0 end - local.get $0 + local.get $29 i32.add - local.set $0 - local.get $3 + local.set $29 + local.get $60 i32.const 1 i32.add - local.set $3 - br $for-loop|0217 + local.set $60 + br $for-loop|0317 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $29 i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 31 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $6 i32.store offset=4 - local.get $10 - local.get $0 + local.get $6 + local.get $29 i32.store offset=12 - local.get $10 - local.get $3 + local.get $6 + local.get $4 i32.store offset=8 - local.get $10 - local.get $9 + local.get $6 + local.get $5 i32.store offset=4 - local.get $10 - local.get $9 + local.get $6 + local.get $5 i32.store - local.get $9 + local.get $5 if - local.get $10 - local.get $9 + local.get $6 + local.get $5 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end i32.const 0 - local.set $3 - loop $for-loop|1218 + local.set $60 + loop $for-loop|1320 local.get $1 - local.get $3 + local.get $60 i32.gt_s if - local.get $3 + local.get $60 i32.const 2 i32.shl - local.get $8 + local.get $2 i32.add i32.load - local.tee $11 + local.tee $4 if - local.get $2 - local.get $9 + local.get $3 + local.get $5 i32.add - local.get $11 + local.get $4 i32.load offset=4 - local.get $11 + local.get $4 i32.load offset=12 i32.const 2 i32.shl - local.tee $11 + local.tee $4 call $~lib/memory/memory.copy - local.get $2 - local.get $11 + local.get $3 + local.get $4 i32.add - local.set $2 + local.set $3 end - local.get $3 + local.get $60 i32.const 1 i32.add - local.set $3 - br $for-loop|1218 + local.set $60 + br $for-loop|1320 end end i32.const 0 - local.set $3 - loop $for-loop|2219 - local.get $0 - local.get $3 + local.set $60 + loop $for-loop|2323 + local.get $29 + local.get $60 i32.gt_s if - local.get $3 + local.get $60 i32.const 2 i32.shl - local.get $9 + local.get $5 i32.add i32.load local.tee $1 if - local.get $9 + local.get $5 local.get $1 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $60 i32.const 1 i32.add - local.set $3 - br $for-loop|2219 + local.set $60 + br $for-loop|2323 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $6 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28028,9 +27830,9 @@ i32.const 31 i32.const 14928 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=148 - local.get $10 + local.get $6 i32.load offset=12 i32.const 8 i32.ne @@ -28043,28 +27845,28 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 loop $for-loop|8 - local.get $1 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $2 i32.gt_s if - local.get $10 - local.get $0 + local.get $6 + local.get $2 call $~lib/array/Array#__get - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store local.get $1 + i32.store local.get $0 + local.get $2 call $~lib/array/Array#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=8 - local.get $2 + local.get $1 local.get $3 call $~lib/string/String.__eq i32.eqz @@ -28076,10 +27878,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|8 end end @@ -28167,8 +27969,6 @@ global.get $~lib/memory/__stack_pointer i32.const 15120 i32.store offset=164 - i32.const 0 - local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -28176,7 +27976,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner3 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $2 i64.const 0 @@ -28192,63 +27992,63 @@ i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $3 i32.store - local.get $7 + local.get $3 i32.load offset=4 - local.set $8 - loop $for-loop|033 + local.set $4 + loop $for-loop|065 local.get $2 local.get $1 i32.load offset=12 - local.tee $9 + local.tee $5 local.get $2 - local.get $9 + local.get $5 i32.lt_s select - local.get $3 + local.get $28 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.tee $9 - local.get $3 + local.tee $5 + local.get $28 i32.const 2 i32.shl - local.tee $10 + local.tee $6 local.get $1 i32.load offset=4 i32.add i32.load - local.tee $11 + local.tee $7 i32.store offset=4 i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $11 - local.get $3 + local.get $5 + local.get $7 + local.get $28 local.get $1 i32.const 15120 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - local.tee $9 + local.tee $5 i32.store offset=8 - local.get $8 - local.get $10 + local.get $4 + local.get $6 i32.add - local.get $9 + local.get $5 i32.store - local.get $9 + local.get $5 if - local.get $7 - local.get $9 + local.get $3 + local.get $5 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $28 i32.const 1 i32.add - local.set $3 - br $for-loop|033 + local.set $28 + br $for-loop|065 end end global.get $~lib/memory/__stack_pointer @@ -28256,9 +28056,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.store - local.get $7 + local.get $3 call $~lib/array/Array<~lib/array/Array>#flat local.tee $0 i32.store offset=144 @@ -28338,12 +28138,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0224 + loop $while-continue|0330 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0224 + br $while-continue|0330 end end end @@ -28434,7 +28234,7 @@ end local.get $0 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|0 local.get $2 local.get $3 @@ -28444,12 +28244,12 @@ local.get $2 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load - local.tee $0 + local.tee $4 i32.store - local.get $0 + local.get $4 local.get $1 call $~lib/string/String.__eq if @@ -28626,13 +28426,10 @@ local.tee $4 i32.const 0 i32.store - local.get $4 local.get $0 local.get $1 i32.shl - local.tee $4 - local.set $1 - local.get $4 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.set $5 @@ -28643,35 +28440,36 @@ local.get $1 call $~lib/memory/memory.copy end + local.get $4 local.get $5 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 local.get $5 i32.store local.get $5 if - local.get $1 + local.get $2 local.get $5 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $2 local.get $5 i32.store offset=4 + local.get $2 local.get $1 - local.get $4 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $std/array/internalCapacity (param $0 i32) (result i32) (local $1 i32) @@ -28735,13 +28533,13 @@ i32.store local.get $0 i32.load offset=12 - local.tee $3 + local.tee $2 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $2 + local.tee $3 i32.add local.tee $4 i32.const 268435455 @@ -28767,7 +28565,7 @@ local.tee $5 local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl local.tee $0 @@ -28777,7 +28575,7 @@ i32.add local.get $1 i32.load offset=4 - local.get $2 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -28950,30 +28748,30 @@ i32.const 0 i32.gt_s select - local.tee $5 + local.tee $1 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $2 + local.tee $5 local.get $4 i32.const 2 i32.shl i32.add local.tee $6 - local.get $5 + local.get $1 i32.const 2 i32.shl call $~lib/memory/memory.copy local.get $3 + local.get $1 local.get $4 - local.get $5 i32.add local.tee $4 i32.ne @@ -28982,7 +28780,7 @@ local.get $4 i32.const 2 i32.shl - local.get $2 + local.get $5 i32.add local.get $3 local.get $4 @@ -28993,14 +28791,14 @@ end local.get $0 local.get $3 - local.get $5 + local.get $1 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -29252,24 +29050,24 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $5 + local.tee $3 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.load offset=4 - local.set $3 + local.set $4 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $4 - local.get $4 + local.tee $5 + local.get $3 local.get $5 - i32.gt_s + i32.lt_s select local.get $2 i32.gt_s @@ -29277,7 +29075,7 @@ local.get $2 i32.const 2 i32.shl - local.tee $4 + local.tee $5 local.get $0 i32.load offset=4 i32.add @@ -29285,8 +29083,8 @@ local.set $6 i32.const 3 global.set $~argumentsLength - local.get $3 local.get $4 + local.get $5 i32.add local.get $6 local.get $2 @@ -29744,50 +29542,44 @@ i32.const 0 i32.store i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_u - select - local.tee $3 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 $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select - local.tee $1 - local.get $1 - local.get $3 + local.tee $2 + local.get $2 + i32.const 0 i32.gt_s select i32.const 1 i32.shl - local.set $4 - local.get $3 - local.get $1 - local.get $1 - local.get $3 + local.set $3 + i32.const 0 + local.get $2 + local.get $2 + i32.const 0 i32.lt_s select i32.const 1 i32.shl - local.tee $1 - local.get $4 + local.tee $4 + local.get $3 i32.sub - local.tee $3 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -29798,12 +29590,12 @@ return end i32.const 0 - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.eq local.get $4 + i32.eq + local.get $3 select if global.get $~lib/memory/__stack_pointer @@ -29814,16 +29606,16 @@ return end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store local.get $1 local.get $0 - local.get $4 - i32.add local.get $3 + i32.add + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -29871,71 +29663,70 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $2 - select local.tee $0 - local.tee $1 + select + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.get $2 + local.get $0 i32.add - local.tee $3 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $0 + local.get $2 local.get $3 + local.get $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $0 if - local.get $1 + local.get $2 i32.const 45 i32.store16 end @@ -29943,7 +29734,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) @@ -30040,6 +29831,214 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + return + end + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $1 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 9232 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $5 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $3 + i32.add + local.set $3 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $6 + i32.mul + local.get $3 + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + local.get $4 + i32.const 1 + i32.shl + local.get $3 + 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 + call $~lib/memory/memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $4 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.get $2 + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + local.get $4 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -30209,29 +30208,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -30239,117 +30216,146 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 44 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - 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 16 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill - local.get $0 - local.get $3 - i32.store - local.get $3 - if - local.get $0 - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + block $__inlined_func$std/array/ArrayU32#constructor@varargs (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15652 + 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 16 + i32.const 44 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + 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 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 65 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $0 + local.get $2 + i32.store + local.get $2 + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + 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 + br $__inlined_func$std/array/ArrayU32#constructor@varargs + end + br $folding-inner1 end - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 32064 @@ -30669,8 +30675,7 @@ select local.get $1 i32.add - local.set $1 - local.get $1 + local.tee $1 local.get $2 i32.ge_u if @@ -30896,12 +30901,12 @@ end i32.const -1 end - i32.const 0 - i32.ge_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + i32.ge_s ) (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -31119,11 +31124,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -31173,11 +31178,11 @@ i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 local.get $4 @@ -31186,7 +31191,7 @@ local.tee $0 call $~lib/memory/memory.copy local.get $0 - local.get $3 + local.get $5 i32.add local.get $1 i32.load offset=4 @@ -31202,7 +31207,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $3 return end i32.const 32064 @@ -31378,11 +31383,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -31412,17 +31417,17 @@ i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store local.get $0 i32.load offset=12 - local.set $3 + local.set $4 loop $for-loop|0 - local.get $3 + local.get $4 local.get $0 i32.load offset=12 local.tee $5 - local.get $3 + local.get $4 local.get $5 i32.lt_s select @@ -31446,7 +31451,7 @@ i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $4 + local.get $3 local.get $5 call $~lib/array/Array#push drop @@ -31466,7 +31471,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return end i32.const 32064 @@ -31514,10 +31519,10 @@ end local.get $0 i32.load offset=4 - local.tee $2 + local.tee $1 i32.load - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 4 i32.add local.get $3 @@ -31528,7 +31533,7 @@ i32.shl local.tee $4 call $~lib/memory/memory.copy - local.get $2 + local.get $1 local.get $4 i32.add i32.const 0 @@ -31645,11 +31650,11 @@ ) (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -31780,11 +31785,11 @@ (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -31861,13 +31866,13 @@ i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $5 + local.tee $2 i32.store - local.get $5 + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $2 + local.tee $5 local.get $4 i32.const 2 i32.shl @@ -31888,7 +31893,7 @@ local.get $4 i32.const 2 i32.shl - local.get $2 + local.get $5 i32.add local.get $3 local.get $4 @@ -31910,7 +31915,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $2 return end i32.const 32064 @@ -31961,7 +31966,7 @@ local.get $4 i32.const 1 i32.sub - local.set $5 + local.set $4 loop $while-continue|0 local.get $1 local.get $3 @@ -31972,22 +31977,22 @@ i32.shl local.get $2 i32.add - local.tee $6 + local.tee $5 i32.load - local.set $4 - local.get $6 + local.set $6 local.get $5 + local.get $4 local.get $1 i32.sub i32.const 2 i32.shl local.get $2 i32.add - local.tee $6 + local.tee $5 i32.load i32.store + local.get $5 local.get $6 - local.get $4 i32.store local.get $1 i32.const 1 @@ -32037,11 +32042,11 @@ ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -32154,29 +32159,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -32184,115 +32167,144 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 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 16 - i32.const 45 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - 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 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - local.tee $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill local.get $0 - local.get $3 i32.store - local.get $3 - if - local.get $0 - local.get $3 - call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + block $__inlined_func$std/array/ArrayU8#constructor@varargs (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15652 + 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 16 + i32.const 45 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + 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 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 65 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $0 + local.get $2 + i32.store + local.get $2 + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + 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 + br $__inlined_func$std/array/ArrayU8#constructor@varargs + end + br $folding-inner1 end - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 32064 @@ -32578,8 +32590,7 @@ select local.get $1 i32.add - local.set $1 - local.get $1 + local.tee $1 local.get $2 i32.ge_u if @@ -32734,12 +32745,12 @@ end i32.const -1 end - i32.const 0 - i32.ge_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + i32.ge_s ) (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -32957,11 +32968,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -32986,15 +32997,15 @@ i32.store local.get $0 i32.load offset=12 - local.tee $2 + local.tee $4 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $3 + local.tee $2 i32.add - local.tee $4 + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -33006,26 +33017,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $5 local.get $0 i32.load offset=4 - local.get $2 + local.get $4 call $~lib/memory/memory.copy - local.get $2 local.get $4 + local.get $5 i32.add local.get $1 i32.load offset=4 - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33035,7 +33046,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $3 return end i32.const 32064 @@ -33048,6 +33059,7 @@ (func $export:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -33079,18 +33091,20 @@ i32.const 2147483647 local.set $3 end - local.get $3 local.get $0 i32.load offset=12 local.tee $4 + local.set $5 + local.get $3 + local.get $4 local.get $3 local.get $4 i32.lt_s select - local.set $5 + local.set $3 local.get $0 i32.load offset=4 - local.tee $3 + local.tee $6 local.get $1 i32.const 0 i32.lt_s @@ -33108,7 +33122,7 @@ local.get $1 local.get $4 local.get $1 - local.get $4 + local.get $5 i32.lt_s select end @@ -33136,14 +33150,14 @@ select end local.tee $2 - local.get $3 + local.get $6 i32.add - local.get $5 + local.get $3 i32.const 0 i32.lt_s if (result i32) + local.get $3 local.get $4 - local.get $5 i32.add local.tee $3 i32.const 0 @@ -33152,11 +33166,11 @@ i32.gt_s select else - local.get $5 + local.get $3 local.get $4 + local.get $3 local.get $4 - local.get $5 - i32.gt_s + i32.lt_s select end local.get $2 @@ -33297,11 +33311,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -33331,17 +33345,17 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store local.get $0 i32.load offset=12 - local.set $3 + local.set $4 loop $for-loop|0 - local.get $3 + local.get $4 local.get $0 i32.load offset=12 local.tee $5 - local.get $3 + local.get $4 local.get $5 i32.lt_s select @@ -33363,7 +33377,7 @@ i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $4 + local.get $3 local.get $5 call $~lib/array/Array#push drop @@ -33383,7 +33397,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return end i32.const 32064 @@ -33430,10 +33444,10 @@ end local.get $0 i32.load offset=4 - local.tee $2 + local.tee $1 i32.load8_u - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 1 i32.add local.get $3 @@ -33441,7 +33455,7 @@ i32.sub local.tee $3 call $~lib/memory/memory.copy - local.get $2 + local.get $1 local.get $3 i32.add i32.const 0 @@ -33581,11 +33595,11 @@ ) (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -33712,11 +33726,11 @@ (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -33793,14 +33807,14 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $5 + local.tee $2 i32.store - local.get $5 + local.get $2 i32.load offset=4 local.get $4 local.get $0 i32.load offset=4 - local.tee $2 + local.tee $5 i32.add local.tee $6 local.get $1 @@ -33813,8 +33827,8 @@ i32.ne if local.get $6 - local.get $2 local.get $4 + local.get $5 i32.add local.get $3 local.get $4 @@ -33834,7 +33848,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $2 return end i32.const 32064 @@ -33876,11 +33890,11 @@ ) (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -33943,11 +33957,11 @@ ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34031,11 +34045,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:std/array/ArrayStr#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34103,11 +34117,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34203,11 +34217,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34301,11 +34315,11 @@ (func $export:~lib/array/Array<~lib/string/String>#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 block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34393,11 +34407,11 @@ ) (func $export:~lib/array/Array<~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 block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34696,11 +34710,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -34859,24 +34873,23 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 local.get $0 i32.store - local.get $4 + local.get $3 local.get $1 i32.store offset=4 - local.get $4 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -34889,15 +34902,15 @@ i32.store local.get $0 i32.load offset=12 - local.tee $5 + local.tee $4 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $6 + local.tee $5 i32.add - local.tee $4 + local.tee $3 i32.const 268435455 i32.gt_u if @@ -34909,87 +34922,89 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $6 i32.store - local.get $7 + local.get $6 i32.load offset=4 - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 2 i32.shl - local.set $5 + local.set $4 local.get $0 i32.load offset=4 local.set $0 loop $for-loop|0 - local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.lt_u if + local.get $2 local.get $3 - local.get $4 i32.add local.get $0 - local.get $3 + local.get $2 i32.add i32.load - local.tee $8 + local.tee $7 i32.store - local.get $8 + local.get $7 if + local.get $6 local.get $7 - local.get $8 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $2 i32.const 4 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end + local.get $3 local.get $4 - local.get $5 i32.add - local.set $0 + local.set $2 local.get $1 i32.load offset=4 local.set $1 - local.get $6 + local.get $5 i32.const 2 i32.shl local.set $3 + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 + local.get $0 local.get $3 i32.lt_u if local.get $0 local.get $2 i32.add + local.get $0 local.get $1 - local.get $2 i32.add i32.load local.tee $4 i32.store local.get $4 if - local.get $7 + local.get $6 local.get $4 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 + local.get $0 i32.const 4 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -35001,7 +35016,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end i32.const 32064 @@ -35015,11 +35030,11 @@ (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35041,7 +35056,7 @@ i32.store local.get $0 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 0 i32.le_s if @@ -35053,23 +35068,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 local.get $0 i32.load offset=4 - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $1 i32.store local.get $0 - local.get $2 + local.get $3 i32.store offset=12 - local.get $1 + local.get $2 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -35077,7 +35092,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 return end i32.const 32064 @@ -35091,11 +35106,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35180,11 +35195,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35214,17 +35229,17 @@ i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store local.get $0 i32.load offset=12 - local.set $3 + local.set $4 loop $for-loop|0 - local.get $3 + local.get $4 local.get $0 i32.load offset=12 local.tee $5 - local.get $3 + local.get $4 local.get $5 i32.lt_s select @@ -35250,7 +35265,7 @@ i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $4 + local.get $3 local.get $5 call $~lib/array/Array<~lib/string/String>#push drop @@ -35270,7 +35285,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return end i32.const 32064 @@ -35285,11 +35300,11 @@ (local $2 i32) (local $3 i32) (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35325,12 +35340,12 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $1 - i32.load local.tee $3 + i32.load + local.tee $1 i32.store - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.const 4 i32.add local.get $2 @@ -35341,7 +35356,7 @@ i32.shl local.tee $4 call $~lib/memory/memory.copy - local.get $1 + local.get $3 local.get $4 i32.add i32.const 0 @@ -35357,7 +35372,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 return end i32.const 32064 @@ -35371,11 +35386,11 @@ (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 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35575,13 +35590,13 @@ i32.store local.get $0 i32.load offset=12 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -35591,9 +35606,9 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end @@ -35604,7 +35619,7 @@ i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add local.tee $2 i32.const 0 @@ -35614,9 +35629,9 @@ select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end @@ -35633,47 +35648,49 @@ i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add + local.set $5 + i32.const 0 local.set $0 local.get $2 i32.const 2 i32.shl local.set $1 loop $while-continue|0 + local.get $0 local.get $1 - local.get $3 - i32.gt_u + i32.lt_u if - local.get $3 - local.get $5 + local.get $0 + local.get $4 i32.add local.get $0 - local.get $3 + local.get $5 i32.add i32.load local.tee $2 i32.store local.get $2 if - local.get $4 + local.get $3 local.get $2 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end @@ -35685,7 +35702,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return end i32.const 32064 @@ -35700,11 +35717,11 @@ (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35781,13 +35798,13 @@ i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $5 + local.tee $2 i32.store - local.get $5 + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $2 + local.tee $5 local.get $4 i32.const 2 i32.shl @@ -35808,7 +35825,7 @@ local.get $4 i32.const 2 i32.shl - local.get $2 + local.get $5 i32.add local.get $3 local.get $4 @@ -35830,7 +35847,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $2 return end i32.const 32064 @@ -35847,11 +35864,11 @@ (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -35888,7 +35905,7 @@ local.get $4 i32.const 1 i32.sub - local.set $4 + local.set $3 loop $while-continue|0 local.get $1 local.get $5 @@ -35900,23 +35917,23 @@ i32.shl local.get $2 i32.add - local.tee $6 + local.tee $4 i32.load - local.tee $3 + local.tee $6 i32.store - local.get $6 local.get $4 + local.get $3 local.get $1 i32.sub i32.const 2 i32.shl local.get $2 i32.add - local.tee $6 + local.tee $4 i32.load i32.store + local.get $4 local.get $6 - local.get $3 i32.store local.get $1 i32.const 1 @@ -35946,11 +35963,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -36013,11 +36030,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s @@ -36055,8 +36072,11 @@ i32.store end local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - call $~lib/array/Array<~lib/string/String|null>#join + call $~lib/util/string/joinStringArray global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -36173,53 +36193,4 @@ end end ) - (func $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 22c90ca44a..8659d57eda 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -195,19 +195,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -819,38 +817,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18228 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -866,221 +937,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18228 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18228 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18228 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18228 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1504 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1452,11 +1448,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1467,19 +1463,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1487,7 +1484,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1498,16 +1495,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1518,16 +1515,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1535,7 +1532,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1543,8 +1540,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1561,7 +1558,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1571,13 +1568,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1590,40 +1587,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1653,8 +1650,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2565,16 +2562,26 @@ block $folding-inner1 block $folding-inner0 block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $invalid + block $~lib/array/Array + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/array/Array $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -2885,7 +2892,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2894,26 +2900,27 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 12 i32.const 5 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.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2924,7 +2931,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store i32.const 8 @@ -2934,28 +2941,28 @@ i32.const 1632 i32.const 8 call $~lib/memory/memory.copy - local.get $1 + local.get $0 local.get $2 i32.store i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 local.get $2 i32.store local.get $2 if - local.get $1 + local.get $0 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $0 local.get $2 i32.store offset=4 - local.get $1 + local.get $0 i32.const 8 i32.store offset=8 - local.get $1 + local.get $0 i32.const 2 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -2963,7 +2970,7 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2974,30 +2981,30 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load local.tee $0 i32.store offset=16 @@ -3033,12 +3040,12 @@ local.get $2 i32.const 0 i32.store offset=8 - local.get $1 local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.gt_u + local.get $1 + i32.lt_u local.get $1 i32.const 1073741820 i32.gt_u diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index cbd3c5fff7..cf6693f344 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -201,19 +201,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -825,38 +823,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18172 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -872,221 +943,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18172 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18172 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18172 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18172 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1504 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1458,11 +1454,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1473,19 +1469,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1493,7 +1490,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1504,16 +1501,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1524,16 +1521,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1541,7 +1538,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1549,8 +1546,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1567,7 +1564,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1577,13 +1574,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1596,40 +1593,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1659,8 +1656,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2004,8 +2001,6 @@ i32.const 8 i32.shl local.get $0 - i32.const 65535 - i32.and i32.const 8 i32.shr_u i32.or @@ -2441,8 +2436,6 @@ (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 @@ -2453,10 +2446,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $1 i64.const 0 i64.store - local.get $5 + local.get $1 i32.const 0 i32.store offset=8 memory.size @@ -2491,7 +2484,7 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $5 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2544,66 +2537,22 @@ i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=4 - local.get $4 + local.get $3 i32.const 8 call $~lib/memory/memory.fill local.get $0 - local.get $4 + local.get $3 i32.store - local.get $4 + local.get $3 if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $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.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $4 + local.get $3 i32.store offset=4 local.get $0 i32.const 8 @@ -2618,7 +2567,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $1 local.get $0 i32.store local.get $0 @@ -4261,8 +4210,6 @@ ) (func $~lib/dataview/DataView#constructor (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 @@ -4286,15 +4233,15 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 0 i32.store offset=4 - local.get $4 + local.get $3 i32.const 0 i32.store offset=8 local.get $0 @@ -4317,72 +4264,28 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 local.get $0 i32.store local.get $0 if - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + local.get $3 local.get $0 - 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 $3 - 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 $3 - i32.const 3 - i32.eq - i32.and - if - local.get $5 - call $~lib/rt/itcms/Object#makeGray - end - end - end + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $3 local.get $0 local.get $1 i32.add i32.store offset=4 - local.get $4 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white @@ -4403,4 +4306,53 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index 0c7c84b277..fc0abbc385 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -561,19 +561,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -1185,38 +1183,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 23948 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1232,221 +1303,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 23948 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 23948 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 23948 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 23948 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1536 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1818,11 +1814,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1833,19 +1829,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1853,7 +1850,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1864,16 +1861,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1884,16 +1881,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1901,7 +1898,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1909,8 +1906,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1927,7 +1924,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1937,13 +1934,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1956,40 +1953,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -2019,8 +2016,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2096,45 +2093,46 @@ ) (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) (local $2 i64) + (local $3 i64) local.get $0 + local.get $1 local.get $0 i64.load offset=16 + local.tee $3 + i64.const 1000 + i64.rem_s local.tee $2 - local.get $1 i64.const 1000 i64.const 0 local.get $2 - i64.const 1000 - i64.rem_s - local.tee $2 i64.const 0 i64.lt_s select - local.get $2 i64.add i32.wrap_i64 i32.sub i64.extend_i32_s + local.get $3 i64.add call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) (local $2 i64) + (local $3 i64) local.get $0 + local.get $1 local.get $0 i64.load offset=16 + local.tee $3 + i64.const 60000 + i64.rem_s local.tee $2 - local.get $1 i64.const 60000 i64.const 0 local.get $2 - i64.const 60000 - i64.rem_s - local.tee $2 i64.const 0 i64.lt_s select - local.get $2 i64.add i32.wrap_i64 i32.const 1000 @@ -2143,26 +2141,27 @@ i32.const 1000 i32.mul i64.extend_i32_s + local.get $3 i64.add call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) (local $2 i64) + (local $3 i64) local.get $0 + local.get $1 local.get $0 i64.load offset=16 + local.tee $3 + i64.const 3600000 + i64.rem_s local.tee $2 - local.get $1 i64.const 3600000 i64.const 0 local.get $2 - i64.const 3600000 - i64.rem_s - local.tee $2 i64.const 0 i64.lt_s select - local.get $2 i64.add i32.wrap_i64 i32.const 60000 @@ -2171,26 +2170,27 @@ i32.const 60000 i32.mul i64.extend_i32_s + local.get $3 i64.add call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) (local $2 i64) + (local $3 i64) local.get $0 + local.get $1 local.get $0 i64.load offset=16 + local.tee $3 + i64.const 86400000 + i64.rem_s local.tee $2 - local.get $1 i64.const 86400000 i64.const 0 local.get $2 - i64.const 86400000 - i64.rem_s - local.tee $2 i64.const 0 i64.lt_s select - local.get $2 i64.add i32.wrap_i64 i32.const 3600000 @@ -2199,6 +2199,7 @@ i32.const 3600000 i32.mul i64.extend_i32_s + local.get $3 i64.add call $~lib/date/Date#setTime ) @@ -2473,25 +2474,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/util/number/itoa32 (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 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 local.get $0 i32.eqz if @@ -2500,6 +2501,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1872 + local.set $1 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -2510,63 +2512,62 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $2 + local.tee $3 select local.tee $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.get $2 + local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.store loop $while-continue|0 local.get $0 @@ -2576,20 +2577,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $3 + local.set $4 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add - local.get $3 + local.get $4 i32.const 100 i32.div_u i32.const 2 @@ -2597,7 +2598,7 @@ i32.const 1884 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -2616,13 +2617,13 @@ i32.const 100 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 100 @@ -2642,12 +2643,12 @@ i32.const 10 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 2 @@ -2657,21 +2658,21 @@ i32.load i32.store else - local.get $1 + local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $4 + local.get $1 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $2 + local.get $3 if - local.get $4 + local.get $1 i32.const 45 i32.store16 end @@ -2679,8 +2680,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 end + local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3559,25 +3560,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/string/String#concat (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 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat local.get $0 i32.const 20 i32.sub @@ -3586,7 +3587,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -3595,9 +3596,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 - i32.add local.tee $4 + i32.add + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3605,30 +3606,31 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3456 + local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 - local.get $0 local.get $2 + local.get $0 + local.get $3 call $~lib/memory/memory.copy local.get $2 - local.get $4 + local.get $3 i32.add local.get $1 - local.get $3 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 end + local.get $2 ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -3829,24 +3831,21 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $0 - local.tee $2 i32.load offset=12 - local.tee $3 + local.tee $6 i32.const 1 i32.add local.tee $4 - local.tee $5 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 - local.tee $6 + local.tee $8 i32.const 2 i32.shr_u i32.gt_u if - local.get $5 + local.get $4 i32.const 268435455 i32.gt_u if @@ -3857,39 +3856,38 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $6 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $8 i32.const 1 i32.shl - local.tee $7 + local.tee $0 i32.const 1073741820 - local.get $7 + local.get $0 i32.const 1073741820 i32.lt_u select - local.tee $7 - local.get $5 + local.tee $0 + local.get $4 i32.const 8 - local.get $5 + local.get $4 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $5 - local.get $5 - local.get $7 - i32.lt_u + local.tee $3 + local.get $0 + local.get $3 + i32.gt_u select - local.tee $7 - local.tee $8 + local.tee $9 local.get $2 i32.load - local.tee $10 - local.tee $11 + local.tee $7 + local.tee $0 i32.const 20 i32.sub - local.tee $9 + local.tee $5 i32.load i32.const -4 i32.and @@ -3897,61 +3895,61 @@ i32.sub i32.le_u if + local.get $5 local.get $9 - local.get $8 i32.store offset=16 - local.get $11 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $8 local.get $9 + local.get $5 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $5 - local.get $11 - local.get $8 + local.tee $3 + local.get $0 local.get $9 + local.get $5 i32.load offset=16 - local.tee $9 - local.get $8 + local.tee $0 + local.get $0 local.get $9 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $5 + local.get $3 + local.set $0 end - local.tee $5 - local.get $6 + local.get $0 + local.get $8 i32.add - local.get $7 - local.get $6 + local.get $9 + local.get $8 i32.sub call $~lib/memory/memory.fill - local.get $5 - local.get $10 + local.get $0 + local.get $7 i32.ne if local.get $2 - local.get $5 + local.get $0 i32.store local.get $2 - local.get $5 + local.get $0 i32.store offset=4 - local.get $5 + local.get $0 if local.get $2 - local.get $5 + local.get $0 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end local.get $2 - local.get $7 + local.get $9 i32.store offset=8 end - local.get $0 + local.get $2 i32.load offset=4 - local.get $3 + local.get $6 i32.const 2 i32.shl i32.add @@ -3964,7 +3962,7 @@ i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $0 + local.get $2 local.get $4 i32.store offset=12 ) @@ -3980,35 +3978,36 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 return end local.get $0 + local.tee $1 i32.load16_u - local.set $2 + local.set $0 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $2 + local.get $0 i32.const 128 i32.or i32.const 160 i32.eq - local.get $2 + local.get $0 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $2 + local.get $0 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $2 + local.get $0 i32.const -8192 i32.add i32.const 10 @@ -4017,31 +4016,31 @@ drop block $break|0 block $case6|0 - local.get $2 + local.get $0 i32.const 5760 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8232 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8233 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8239 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8287 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 12288 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 65279 i32.eq br_if $case6|0 @@ -4053,33 +4052,33 @@ i32.const 0 end if - local.get $0 + local.get $1 i32.const 2 i32.add - local.tee $0 + local.tee $1 i32.load16_u - local.set $2 - local.get $1 + local.set $0 + local.get $2 i32.const 1 i32.sub - local.set $1 + local.set $2 br $while-continue|0 end end i32.const 1 - local.set $3 - local.get $2 + local.set $5 + local.get $0 i32.const 43 i32.eq - local.get $2 + local.get $0 i32.const 45 i32.eq i32.or if (result i32) - local.get $1 + local.get $2 i32.const 1 i32.sub - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -4087,22 +4086,22 @@ end i32.const -1 i32.const 1 - local.get $2 + local.get $0 i32.const 45 i32.eq select - local.set $3 - local.get $0 + local.set $5 + local.get $1 i32.const 2 i32.add - local.tee $0 + local.tee $1 i32.load16_u else - local.get $2 + local.get $0 end i32.const 48 i32.eq - local.get $1 + local.get $2 i32.const 2 i32.gt_s i32.and @@ -4110,101 +4109,101 @@ block $break|1 block $case2|1 block $case1|1 - local.get $0 + local.get $1 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $2 + local.tee $0 i32.const 98 i32.ne if - local.get $2 + local.get $0 i32.const 111 i32.eq br_if $case1|1 - local.get $2 + local.get $0 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $2 i32.const 2 i32.sub - local.set $1 + local.set $2 i32.const 2 - local.set $4 + local.set $3 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $2 i32.const 2 i32.sub - local.set $1 + local.set $2 i32.const 8 - local.set $4 + local.set $3 br $break|1 end - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $2 i32.const 2 i32.sub - local.set $1 + local.set $2 i32.const 16 - local.set $4 + local.set $3 end end - local.get $4 + local.get $3 i32.const 10 - local.get $4 + local.get $3 select - local.set $4 + local.set $3 loop $while-continue|2 block $while-break|2 - local.get $1 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $1 - local.get $2 + local.set $2 + local.get $0 if - local.get $0 + local.get $1 i32.load16_u - local.tee $2 + local.tee $0 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 48 i32.sub else - local.get $2 + local.get $0 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $2 + local.get $0 i32.const 55 i32.sub else - local.get $2 + local.get $0 i32.const 87 i32.sub - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 97 i32.sub i32.const 25 @@ -4212,11 +4211,11 @@ select end end - local.tee $2 - local.get $4 + local.tee $0 + local.get $3 i32.ge_u if - local.get $5 + local.get $4 i32.eqz if i32.const 0 @@ -4224,21 +4223,21 @@ end br $while-break|2 end - local.get $2 + local.get $0 + local.get $3 local.get $4 - local.get $5 i32.mul i32.add - local.set $5 - local.get $0 + local.set $4 + local.get $1 i32.const 2 i32.add - local.set $0 + local.set $1 br $while-continue|2 end end end - local.get $3 + local.get $4 local.get $5 i32.mul ) @@ -4251,16 +4250,26 @@ block $~lib/array/Array<~lib/string/String> block $~lib/staticarray/StaticArray<~lib/string/String> block $~lib/date/Date - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -4321,14 +4330,7 @@ br $while-continue|01 end end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return + br $folding-inner0 end unreachable end @@ -4415,30 +4417,29 @@ i64.store offset=104 local.get $0 i32.load - local.tee $1 + local.tee $3 i32.const 0 i32.lt_s - local.tee $3 - local.get $1 + local.tee $1 + local.get $3 i32.const 10000 i32.ge_s i32.or if global.get $~lib/memory/__stack_pointer local.tee $4 - local.get $4 i32.const 1616 i32.const 1648 - local.get $3 + local.get $1 select - local.tee $3 + local.tee $5 i32.store - local.get $1 + local.get $3 i32.const 31 i32.shr_s - local.tee $4 + local.tee $1 local.get $1 - local.get $4 + local.get $3 i32.add i32.xor call $~lib/number/I32#toString @@ -4456,23 +4457,24 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $3 + local.get $4 + local.get $5 local.get $1 call $~lib/string/String.__concat local.tee $1 i32.store offset=16 else global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 call $~lib/number/I32#toString - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=8 - local.get $1 + local.get $3 i32.const 4 call $~lib/string/String#padStart local.tee $1 @@ -4574,10 +4576,9 @@ call $~lib/number/I32#toString local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $4 local.get $3 i32.store offset=68 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=76 local.get $3 @@ -4622,10 +4623,9 @@ call $~lib/number/I32#toString local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $4 local.get $3 i32.store offset=52 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=60 local.get $3 @@ -4670,10 +4670,9 @@ call $~lib/number/I32#toString local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $4 local.get $3 i32.store offset=36 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=44 local.get $3 @@ -4716,10 +4715,9 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 local.get $0 i32.store offset=12 - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=28 local.get $0 @@ -4792,12 +4790,12 @@ i32.const 28 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $2 i32.const 4560 i32.const 28 call $~lib/memory/memory.copy local.get $1 - local.get $6 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 48 @@ -4811,73 +4809,73 @@ i32.store offset=4 local.get $0 i32.load - local.tee $2 + local.tee $5 local.get $0 i32.load offset=4 - local.tee $5 + local.tee $1 i32.const 3 i32.lt_s i32.sub - local.tee $1 + local.set $4 + i32.const 7 i32.const 0 - i32.ge_s - local.set $7 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $5 + local.get $1 i32.const 1579 i32.add i32.load8_u - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $7 + local.get $4 + i32.const 0 + i32.ge_s + local.tee $6 select i32.const 4 i32.div_s - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.const 99 i32.sub - local.get $7 + local.get $6 select i32.const 100 i32.div_s i32.sub - local.get $1 - local.get $1 + local.get $4 + local.get $4 i32.const 399 i32.sub - local.get $7 + local.get $6 select i32.const 400 i32.div_s i32.add - local.get $1 + local.get $4 i32.add i32.add + local.get $0 + i32.load offset=8 + local.tee $4 i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add - local.set $1 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $2 + local.get $5 i32.const 31 i32.shr_s local.tee $7 - i32.add + local.get $5 local.get $7 + i32.add i32.xor call $~lib/number/I32#toString local.set $7 @@ -4892,15 +4890,15 @@ call $~lib/string/String#padStart local.tee $0 i32.store offset=16 - local.get $2 + local.get $5 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i32.const 1616 i32.store offset=8 - local.get $2 + local.get $5 i32.const 1616 local.get $0 call $~lib/string/String.__concat @@ -4908,17 +4906,17 @@ i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 + local.tee $5 + local.get $6 i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add i32.load - local.tee $1 + local.tee $2 i32.store offset=32 - local.get $2 local.get $5 + local.get $1 i32.const 1 i32.sub i32.const 2 @@ -4926,10 +4924,10 @@ local.get $3 i32.add i32.load - local.tee $2 + local.tee $1 i32.store offset=36 - local.get $1 local.get $2 + local.get $1 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4980,7 +4978,6 @@ (local $1 i64) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 40 i32.sub @@ -5030,10 +5027,9 @@ call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $3 local.get $2 i32.store offset=32 - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=36 local.get $2 @@ -5049,9 +5045,9 @@ local.get $2 i32.const 3520 call $~lib/string/String.__concat - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=16 i64.const 3600000 i64.const 0 @@ -5069,23 +5065,22 @@ i32.const 60000 i32.div_s call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $2 + local.get $3 i32.store offset=24 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=32 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 local.get $3 + i32.store offset=20 local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $2 global.get $~lib/memory/__stack_pointer @@ -5119,10 +5114,9 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 local.get $0 i32.store offset=8 - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=16 local.get $0 @@ -5142,8 +5136,8 @@ ) (func $~lib/date/Date#toUTCString (param $0 i32) (result i32) (local $1 i32) - (local $2 i64) - (local $3 i32) + (local $2 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) @@ -5166,131 +5160,131 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i64.const 0 i64.store offset=16 - local.get $1 + local.get $2 i64.const 0 i64.store offset=24 - local.get $1 + local.get $2 i64.const 0 i64.store offset=32 - local.get $1 + local.get $2 i64.const 0 i64.store offset=40 - local.get $1 + local.get $2 i64.const 0 i64.store offset=48 - local.get $1 + local.get $2 i64.const 0 i64.store offset=56 - local.get $1 + local.get $2 i64.const 0 i64.store offset=64 - local.get $1 + local.get $2 i64.const 0 i64.store offset=72 - local.get $1 + local.get $2 i64.const 0 i64.store offset=80 - local.get $1 + local.get $2 i64.const 0 i64.store offset=88 i32.const 28 i32.const 4 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.const 5616 i32.const 28 call $~lib/memory/memory.copy + local.get $2 local.get $1 - local.get $3 i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 4 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.const 6048 i32.const 48 call $~lib/memory/memory.copy - local.get $4 + local.get $5 i32.store offset=4 local.get $0 i32.load - local.tee $5 + local.tee $6 local.get $0 i32.load offset=4 - local.tee $6 + local.tee $4 i32.const 3 i32.lt_s i32.sub - local.tee $1 + local.set $2 + i32.const 7 i32.const 0 - i32.ge_s - local.set $7 local.get $0 i32.load offset=8 - local.tee $8 - local.get $6 + local.tee $7 + local.get $4 i32.const 1579 i32.add i32.load8_u - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.const 3 i32.sub - local.get $7 + local.get $2 + i32.const 0 + i32.ge_s + local.tee $8 select i32.const 4 i32.div_s - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.const 99 i32.sub - local.get $7 + local.get $8 select i32.const 100 i32.div_s i32.sub - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.const 399 i32.sub - local.get $7 + local.get $8 select i32.const 400 i32.div_s i32.add - local.get $1 + local.get $2 i32.add i32.add i32.add i32.const 7 i32.rem_s - local.tee $1 - i32.const 7 - i32.const 0 - local.get $1 + local.tee $2 i32.const 0 i32.lt_s select + local.get $2 i32.add - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $5 + local.get $6 i32.const 31 i32.shr_s local.tee $9 - i32.add + local.get $6 local.get $9 + i32.add i32.xor call $~lib/number/I32#toString local.set $9 @@ -5303,75 +5297,75 @@ local.get $9 i32.const 4 call $~lib/string/String#padStart - local.tee $1 + local.tee $2 i32.store offset=16 - local.get $5 + local.get $6 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $6 i32.const 1616 i32.store offset=8 - local.get $5 + local.get $6 i32.const 1616 - local.get $1 + local.get $2 call $~lib/string/String.__concat - local.tee $1 + local.tee $2 i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.const 2 i32.shl - local.get $3 + local.get $1 i32.add i32.load - local.tee $3 + local.tee $1 i32.store offset=80 - local.get $8 + local.get $7 call $~lib/number/I32#toString - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=88 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=92 - local.get $5 + local.get $6 i32.const 2 call $~lib/string/String#padStart - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=84 - local.get $3 - local.get $5 + local.get $1 + local.get $6 call $~lib/string/String.__concat - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=72 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add i32.load local.tee $4 i32.store offset=76 - local.get $3 + local.get $1 local.get $4 call $~lib/string/String.__concat - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=68 - local.get $3 local.get $1 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5387,39 +5381,38 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=52 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $2 - i64.const 86400000 - i64.const 0 - local.get $2 + local.tee $3 i64.const 0 i64.lt_s select + local.get $3 i64.add i32.wrap_i64 i32.const 3600000 i32.div_s call $~lib/number/I32#toString - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $3 + local.get $2 i32.store offset=60 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=68 - local.get $3 + local.get $2 i32.const 2 call $~lib/string/String#padStart - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=56 local.get $1 - local.get $3 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5435,39 +5428,38 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=36 + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $2 - i64.const 3600000 - i64.const 0 - local.get $2 + local.tee $3 i64.const 0 i64.lt_s select + local.get $3 i64.add i32.wrap_i64 i32.const 60000 i32.div_s call $~lib/number/I32#toString - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $3 + local.get $2 i32.store offset=44 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=52 - local.get $3 + local.get $2 i32.const 2 call $~lib/string/String#padStart - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=40 local.get $1 - local.get $3 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5483,17 +5475,17 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $2 - i64.const 60000 - i64.const 0 - local.get $2 + local.tee $3 i64.const 0 i64.lt_s select + local.get $3 i64.add i32.wrap_i64 i32.const 1000 @@ -5501,10 +5493,9 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 local.get $0 i32.store offset=28 - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=36 local.get $0 @@ -6068,8 +6059,9 @@ (func $start:std/date (local $0 i32) (local $1 i64) - (local $2 i32) + (local $2 i64) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 36 i32.sub @@ -6101,16 +6093,18 @@ local.get $0 i32.const 0 i32.store offset=32 + i32.const 1970 + i32.const 1 + i32.const 1 + i32.const 0 + i32.const 0 + i32.const 0 + i32.const 0 + call $~lib/date/epochMillis + local.tee $1 + local.set $2 block $folding-inner0 - i32.const 1970 - i32.const 1 - i32.const 1 - i32.const 0 - i32.const 0 - i32.const 0 - i32.const 0 - call $~lib/date/epochMillis - local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6118,7 +6112,7 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 + local.get $2 i64.eqz i32.eqz if @@ -6138,6 +6132,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6145,7 +6140,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.eqz i32.eqz if @@ -6165,6 +6159,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6172,7 +6167,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.eqz i32.eqz if @@ -6192,6 +6186,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6199,7 +6194,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const 631152000000 i64.ne if @@ -6219,6 +6213,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6226,7 +6221,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const -65007360000000 i64.ne if @@ -6246,6 +6240,7 @@ i32.const 1 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6253,7 +6248,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const 1541847600001 i64.ne if @@ -6273,6 +6267,7 @@ i32.const 0 call $~lib/date/epochMillis local.tee $1 + local.get $1 i64.const -8640000000000000 i64.lt_s local.get $1 @@ -6280,7 +6275,6 @@ i64.gt_s i32.or br_if $folding-inner0 - local.get $1 i64.const 8640000000000000 i64.ne if @@ -7490,32 +7484,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -7523,8 +7517,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -7532,7 +7526,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -7563,32 +7557,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -7596,8 +7590,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -7605,7 +7599,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -7636,32 +7630,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -7669,8 +7663,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -7678,7 +7672,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -7709,32 +7703,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -7742,8 +7736,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -7751,7 +7745,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -7782,32 +7776,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -7815,8 +7809,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -7824,7 +7818,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -7855,32 +7849,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -7888,8 +7882,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -7897,7 +7891,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -7928,32 +7922,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -7961,8 +7955,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -7970,7 +7964,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -8001,32 +7995,32 @@ i32.load local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 3 i32.lt_s i32.sub - local.set $3 + local.set $4 i32.const 7 i32.const 0 local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.const 1579 i32.add i32.load8_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 3 i32.sub - local.get $3 + local.get $4 i32.const 0 i32.ge_s local.tee $0 select i32.const 4 i32.div_s - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 99 i32.sub local.get $0 @@ -8034,8 +8028,8 @@ i32.const 100 i32.div_s i32.sub - local.get $3 - local.get $3 + local.get $4 + local.get $4 i32.const 399 i32.sub local.get $0 @@ -8043,7 +8037,7 @@ i32.const 400 i32.div_s i32.add - local.get $3 + local.get $4 i32.add i32.add i32.add @@ -8955,7 +8949,7 @@ global.get $~lib/memory/__stack_pointer i64.const 8640000000000000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $3 i32.store local.get $0 i64.load offset=16 @@ -8969,7 +8963,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load offset=16 i64.const 8640000000000000 i64.ne @@ -8993,7 +8987,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load i32.const 275760 i32.ne @@ -9017,7 +9011,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=4 i32.const 9 i32.ne @@ -9041,7 +9035,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=8 i32.const 13 i32.ne @@ -9057,10 +9051,10 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 local.get $0 i32.store offset=28 - local.get $3 + local.get $4 i32.const 7200 i32.store offset=32 local.get $0 @@ -9075,14 +9069,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store offset=28 - local.get $2 + local.get $3 i32.const 7280 i32.store offset=32 local.get $0 @@ -9105,9 +9099,9 @@ global.get $~lib/memory/__stack_pointer i64.const -8639999999999999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $3 i32.store offset=12 - local.get $2 + local.get $3 i32.load i32.const -271821 i32.ne @@ -9119,7 +9113,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=4 i32.const 4 i32.ne @@ -9131,7 +9125,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=8 i32.const 20 i32.ne @@ -9145,7 +9139,7 @@ end i64.const 86400000 i64.const 0 - local.get $2 + local.get $3 i64.load offset=16 i64.const 86400000 i64.rem_s @@ -9168,7 +9162,7 @@ end i64.const 3600000 i64.const 0 - local.get $2 + local.get $3 i64.load offset=16 i64.const 3600000 i64.rem_s @@ -9191,7 +9185,7 @@ end i64.const 60000 i64.const 0 - local.get $2 + local.get $3 i64.load offset=16 i64.const 60000 i64.rem_s @@ -9214,7 +9208,7 @@ end i64.const 1000 i64.const 0 - local.get $2 + local.get $3 i64.load offset=16 i64.const 1000 i64.rem_s @@ -9239,10 +9233,10 @@ call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 local.get $0 i32.store offset=28 - local.get $3 + local.get $4 i32.const 7360 i32.store offset=32 local.get $0 @@ -9257,14 +9251,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store offset=28 - local.get $2 + local.get $3 i32.const 7440 i32.store offset=32 local.get $0 @@ -9379,6 +9373,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9438,25 +9433,28 @@ local.get $1 local.get $4 i32.sub - local.tee $1 + local.tee $6 i32.lt_u if + local.get $6 local.get $2 - local.get $1 + local.get $6 i32.const 2 i32.sub local.get $2 i32.div_u - local.tee $6 + local.tee $7 i32.mul - local.set $7 + local.tee $8 + i32.sub + local.set $1 local.get $2 - local.get $6 + local.get $7 i32.mul - local.set $6 + local.set $7 loop $while-continue|0 local.get $3 - local.get $6 + local.get $7 i32.lt_u if local.get $3 @@ -9473,21 +9471,19 @@ end end local.get $5 - local.get $7 + local.get $8 i32.add i32.const 1872 local.get $1 - local.get $7 - i32.sub call $~lib/memory/memory.copy else local.get $5 i32.const 1872 - local.get $1 + local.get $6 call $~lib/memory/memory.copy end - local.get $1 local.get $5 + local.get $6 i32.add local.get $0 local.get $4 @@ -9551,9 +9547,10 @@ i32.gt_s select local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s + local.get $4 + i32.lt_s select i32.const 1 i32.shl @@ -9640,7 +9637,7 @@ local.get $0 i32.const 2 i32.shl - local.tee $1 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new local.tee $3 @@ -9648,30 +9645,30 @@ i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 local.get $3 i32.store local.get $3 if - local.get $2 + local.get $1 local.get $3 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 + local.get $1 local.get $3 i32.store offset=4 - local.get $2 local.get $1 - i32.store offset=8 local.get $2 + 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 $2 + local.get $1 ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 3c1f5f2528..981f077769 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -209,19 +209,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -833,38 +831,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18404 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -880,221 +951,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18404 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18404 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18404 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18404 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1466,11 +1462,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1481,19 +1477,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1501,7 +1498,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1512,16 +1509,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1532,16 +1529,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1549,7 +1546,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1557,8 +1554,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1575,7 +1572,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1585,13 +1582,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1604,40 +1601,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1667,8 +1664,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1737,7 +1734,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -1753,7 +1750,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -1763,23 +1760,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load8_s local.tee $8 i32.store8 local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -1794,29 +1791,29 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 i32.load @@ -1829,20 +1826,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 12 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -1871,68 +1868,68 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if local.get $0 - local.get $0 + local.tee $1 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - i32.load8_u local.get $1 + i32.load8_u + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -1940,8 +1937,9 @@ end end i32.const 0 + local.set $1 end - local.tee $0 + local.get $1 i32.eqz if i32.const 1616 @@ -1951,7 +1949,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) @@ -2636,313 +2634,313 @@ i32.store8 end ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub + i32.load offset=8 + local.tee $8 + local.get $2 + i32.shr_u local.get $1 - i32.ge_u + i32.lt_u if + i32.const 1073741820 local.get $2 + i32.shr_u local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $1 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $4 - local.get $1 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $5 - block $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.tee $1 - local.get $0 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 + i32.lt_u + if + i32.const 1456 + i32.const 1728 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load + local.set $7 local.get $1 - i32.sub - local.get $5 - i32.sub - i32.const 0 - local.get $5 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $1 - local.get $0 - local.get $5 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 + i32.const 8 local.get $1 + i32.const 8 i32.gt_u - if - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 + select + local.get $2 + i32.shl + local.set $6 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $3 + if + local.get $8 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1073741820 + local.get $1 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 + local.get $6 + local.get $1 + local.get $6 + i32.gt_u + select + local.set $6 + end + local.get $6 + local.get $7 + local.tee $1 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 i32.and - i32.eq + i32.const 16 + i32.sub + i32.le_u if - loop $while-continue|0 + local.get $2 + local.get $6 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $6 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $6 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $6 + i32.gt_u + select + local.set $9 + block $~lib/util/memory/memmove|inlined.0 + local.get $3 + local.tee $2 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $2 + i32.sub + local.get $9 + i32.sub + i32.const 0 + local.get $9 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $2 local.get $1 + local.get $9 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $2 i32.const 7 i32.and + i32.eq if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 + loop $while-continue|0 + local.get $2 + i32.const 7 + i32.and + if + local.get $9 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $2 + local.tee $5 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $5 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $9 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $1 + i64.load + i64.store + local.get $9 + i32.const 8 + i32.sub + local.set $9 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end end - end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 + loop $while-continue|2 + local.get $9 + if + local.get $2 + local.tee $5 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $5 + local.get $4 + i32.load8_u + i32.store8 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|2 + end end - end - end - loop $while-continue|2 - local.get $5 - if + else local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 + i32.const 7 + i32.and local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $5 - i32.add i32.const 7 i32.and + i32.eq if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + loop $while-continue|3 + local.get $2 + local.get $9 + i32.add + i32.const 7 + i32.and + if + local.get $9 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $9 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + i32.add + local.get $1 + local.get $9 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $9 + i32.const 8 + i32.ge_u + if + local.get $9 + i32.const 8 + i32.sub + local.tee $9 + local.get $2 + i32.add + local.get $1 + local.get $9 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $9 + if + local.get $9 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + i32.add + local.get $1 + local.get $9 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end end - end - end - local.get $4 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1073741820 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1456 - i32.const 1728 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 - i32.shl - local.set $1 - local.get $0 - i32.load - local.tee $2 - local.get $3 - if - local.get $4 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1073741820 - local.get $3 - i32.const 1073741820 - i32.lt_u - select - local.tee $3 - local.get $1 - local.get $1 local.get $3 - i32.lt_u - select local.set $1 end local.get $1 - call $~lib/rt/itcms/__renew - local.tee $3 - local.get $4 + local.get $8 i32.add - local.get $1 - local.get $4 + local.get $6 + local.get $8 i32.sub call $~lib/memory/memory.fill - local.get $2 - local.get $3 + local.get $1 + local.get $7 i32.ne if local.get $0 - local.get $3 + local.get $1 i32.store local.get $0 - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 + local.get $1 if local.get $0 - local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end end local.get $0 - local.get $1 + local.get $6 i32.store offset=8 end ) @@ -3078,7 +3076,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -3094,7 +3092,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -3104,23 +3102,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load local.tee $8 i32.store local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -3134,29 +3132,29 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 i32.load @@ -3169,20 +3167,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 12 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -3212,51 +3210,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -3273,7 +3270,6 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -3282,8 +3278,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -3391,1769 +3388,1801 @@ (local $15 i32) (local $16 i32) (local $17 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 + (local $18 i32) + (local $19 i32) + block $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i64.const 0 - i64.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - local.get $6 - if - local.get $3 - local.get $6 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - i32.const 3 - i32.store offset=4 - local.get $3 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store offset=8 - local.get $6 - if - local.get $3 - local.get $6 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - i32.const 4 - i32.store offset=12 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $3 - i32.store - loop $for-loop|1 - local.get $4 - i32.extend8_s - i32.const 100 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i64.const 0 + i64.store offset=8 + local.get $5 + i32.const 0 + i32.store offset=16 + local.get $5 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + local.get $9 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $9 + local.set $2 + local.get $3 if + local.get $2 local.get $3 - i32.load + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + if + local.get $2 local.get $3 - i32.load offset=4 - local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.store + loop $for-loop|1 + local.get $0 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 $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 100 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $5 - i32.load8_u - local.get $4 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|0 end + i32.const 0 + local.set $6 end - i32.const 0 - local.set $5 - end - local.get $5 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - local.get $4 - i32.extend8_s - local.tee $5 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $5 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find1 - loop $while-continue|02 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.get $6 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.extend8_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 local.get $5 - i32.load8_u - local.get $4 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|02 end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|02 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - call $~lib/map/Map#get - local.get $4 - i32.extend8_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 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.extend8_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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 end - end - local.get $3 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $4 - loop $for-loop|3 - local.get $4 - i32.extend8_s + local.get $2 + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $4 + 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|3 + local.get $0 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 $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find4 - loop $while-continue|05 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|05 - end - end - i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz + i32.const 100 + i32.lt_s if - i32.const 0 - i32.const 1568 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - call $~lib/map/Map#get - local.get $4 - i32.extend8_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - local.get $4 - i32.extend8_s - local.tee $5 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $5 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 local.get $5 - i32.load8_u - local.get $4 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|08 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - call $~lib/map/Map#get - local.get $4 - i32.extend8_s - i32.const 20 - i32.add - i32.ne - if + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.extend8_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.extend8_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $5 + i32.const -2 + i32.and + local.set $6 + br $while-continue|08 + end + end + i32.const 0 + local.set $6 + end + local.get $6 i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.extend8_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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|3 end - end - local.get $3 - i32.load offset=20 - i32.const 100 - i32.ne - if + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $7 i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $4 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $6 - i32.const 0 - i32.store - local.get $3 - local.tee $4 - i32.load offset=8 - local.set $7 - local.get $3 - i32.load offset=16 - local.tee $8 - local.set $9 - local.get $6 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $9 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.const 8 - local.get $9 - i32.const 8 - i32.gt_u - select - local.tee $10 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=4 - local.get $11 - local.get $10 - call $~lib/memory/memory.fill - local.get $3 - local.get $11 - i32.store - local.get $11 - if + i32.store + local.get $2 + i32.load offset=8 + local.set $6 + local.get $2 + i32.load offset=16 + local.tee $5 + local.set $3 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + local.get $8 + i32.const 0 + i32.store offset=12 local.get $3 - local.get $11 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $11 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $3 - i32.store - loop $for-loop|0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 65 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/memory/memory.fill + local.get $8 + local.get $0 + i32.store + local.get $0 + if + local.get $8 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 + local.get $0 + i32.store offset=4 + local.get $8 local.get $2 + i32.store offset=8 + local.get $8 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $8 + i32.store + loop $for-loop|0 + local.get $5 + local.get $19 + i32.gt_s + if + local.get $19 + i32.const 12 + i32.mul + local.get $6 + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $4 + local.tee $0 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $0 + local.get $2 + i32.load8_s + call $~lib/array/Array#__set + end + local.get $19 + i32.const 1 + i32.add + local.set $19 + br $for-loop|0 + end + end + local.get $8 + local.get $4 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $8 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + call $~lib/map/Map#values + local.tee $17 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $7 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $0 if - local.get $2 - i32.const 12 - i32.mul local.get $7 - i32.add - local.tee $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 3 + i32.store offset=4 + local.get $7 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $0 + if + local.get $7 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 4 + i32.store offset=12 + local.get $7 + i32.const 0 + i32.store offset=16 + local.get $7 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $13 + i32.store offset=16 + loop $for-loop|4 + local.get $8 + i32.load offset=12 + local.get $1 + i32.gt_s if - local.get $3 local.get $1 + local.tee $6 + local.get $8 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end local.get $6 + local.get $8 + i32.load offset=4 + i32.add i32.load8_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 + local.set $2 + local.get $17 + local.get $6 + call $~lib/array/Array#__get + local.set $12 + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $2 + local.tee $0 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $3 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $14 - i32.store - local.get $14 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store - local.get $2 - if - local.get $14 - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 3 - i32.store offset=4 - local.get $14 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store offset=8 - local.get $2 - if - local.get $14 - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 4 - i32.store offset=12 - local.get $14 - i32.const 0 - i32.store offset=16 - local.get $14 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - loop $for-loop|4 - local.get $3 - i32.load offset=12 - local.get $0 - i32.gt_s - if - local.get $0 - local.tee $1 - local.get $3 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $3 - i32.load offset=4 - i32.add - i32.load8_s - local.set $5 - local.get $13 - local.get $1 - call $~lib/array/Array#__get - local.set $16 - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $5 - local.tee $6 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find12 - loop $while-continue|013 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $6 - i32.const 255 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $1 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $1 + i32.const -2 + i32.and + local.set $3 + br $while-continue|011 end - br_if $__inlined_func$~lib/map/Map#find12 - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|013 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $16 - i32.const 20 - i32.sub - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $7 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $12 + i32.const 20 + i32.sub + local.tee $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 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find13 local.get $0 - i32.load8_u - local.get $2 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|014 end - br_if $__inlined_func$~lib/map/Map#find15 - local.get $7 - i32.const -2 - i32.and - local.set $0 - br $while-continue|016 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $14 - i32.load - local.get $5 - 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 - local.tee $8 - local.get $14 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|017 - local.get $2 - if - local.get $2 - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + local.set $5 + local.get $7 + local.tee $1 + i32.load + local.get $2 + 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 + local.tee $16 + local.get $1 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $5 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $0 - i32.load8_u - local.get $6 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|015 end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $2 - br $while-continue|017 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $0 - end - local.get $0 - if - local.get $0 - local.get $6 - i32.store8 offset=1 - else - local.get $14 - i32.load offset=16 - local.get $14 - i32.load offset=12 - i32.eq + local.get $3 if - local.get $14 - i32.load offset=20 - local.get $14 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $14 - i32.load offset=4 - else - local.get $14 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - local.get $10 - i32.const 1 - i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - 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 $2 - i32.store offset=4 - local.get $14 - i32.load offset=8 - local.tee $7 - local.get $14 + local.get $3 + local.get $5 + i32.store8 offset=1 + else + local.get $1 i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $12 - local.get $2 - local.set $0 - loop $while-continue|018 - local.get $7 - local.get $12 - i32.ne - if - local.get $7 + local.get $1 + i32.load offset=12 + i32.eq + if + local.get $1 + local.tee $4 + i32.load offset=20 + local.get $1 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 i32.load offset=4 i32.const 1 - i32.and - i32.eqz + i32.shl + i32.const 1 + i32.or + end + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $18 + i32.const 1 + i32.add + local.tee $0 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $15 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $4 + i32.load offset=8 + local.tee $19 + local.get $4 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $14 + local.get $3 + local.set $0 + loop $while-continue|00 + local.get $14 + local.get $19 + i32.ne if - local.get $0 - local.get $7 - i32.load8_s - local.tee $17 - i32.store8 - local.get $0 - local.get $7 - i32.load8_s offset=1 - i32.store8 offset=1 - local.get $0 - local.get $17 - 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 $17 - local.get $17 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $17 - local.get $17 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $17 - local.get $17 - i32.const 16 - i32.shr_u - i32.xor - local.get $10 + local.get $19 + i32.load offset=4 + i32.const 1 i32.and - i32.const 2 - i32.shl - local.get $11 - i32.add - local.tee $17 - i32.load - i32.store offset=4 - local.get $17 - local.get $0 - i32.store - local.get $0 + i32.eqz + if + local.get $0 + local.get $19 + i32.load8_s + local.tee $10 + i32.store8 + local.get $0 + local.get $19 + i32.load8_s offset=1 + i32.store8 offset=1 + local.get $0 + local.get $10 + 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 $10 + local.get $10 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $10 + local.get $10 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $10 + local.get $10 + i32.const 16 + i32.shr_u + i32.xor + local.get $18 + i32.and + i32.const 2 + i32.shl + local.get $11 + i32.add + local.tee $10 + i32.load + i32.store offset=4 + local.get $10 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $19 i32.const 8 i32.add - local.set $0 + local.set $19 + br $while-continue|00 end - local.get $7 - i32.const 8 - i32.add - local.set $7 - br $while-continue|018 end + local.get $4 + local.get $11 + i32.store + local.get $11 + if + local.get $1 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $18 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $1 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $15 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $14 - local.get $11 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $3 i32.store - local.get $11 - if - local.get $14 - local.get $11 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - local.get $10 - i32.store offset=4 - local.get $14 - local.get $2 - i32.store offset=8 + local.get $1 + local.get $1 + i32.load offset=16 + local.tee $0 + i32.const 1 + i32.add + i32.store offset=16 + local.get $0 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $3 local.get $2 - if - local.get $14 - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - local.get $9 - i32.store offset=12 - local.get $14 - local.get $14 + i32.store8 + local.get $3 + local.get $5 + i32.store8 offset=1 + local.get $1 + local.get $1 i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + i32.store offset=20 + local.get $3 + local.get $1 + i32.load + local.get $1 + i32.load offset=4 + local.get $16 + 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 $14 - i32.load offset=8 - local.tee $0 - i32.store - local.get $14 - local.get $14 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 3 - i32.shl - local.get $0 + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + local.get $12 + i32.const 20 + i32.sub local.tee $0 - local.get $5 - i32.store8 local.get $0 + call $~lib/map/Map#set local.get $6 - i32.store8 offset=1 - local.get $14 - local.get $14 - i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 - local.get $0 - local.get $14 - i32.load - local.get $14 - i32.load offset=4 - local.get $8 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $0 - i32.store + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $16 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $1 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 end - end - local.get $14 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|6 - local.get $0 - i32.extend8_s - i32.const 50 - i32.lt_s + local.get $7 + i32.load offset=20 + i32.const 100 + i32.ne if - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load8_u - local.get $0 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|021 - end - end - i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/map/Map#get - local.get $0 + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|6 + local.get $1 i32.extend8_s - i32.const 20 - i32.add - i32.ne + i32.const 50 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/map/Map#delete - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load8_u - local.get $0 - i32.const 255 + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find17 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|018 end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|024 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $5 - end - local.get $5 - 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|6 - end - end - local.get $4 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|8 - local.get $0 - i32.extend8_s - i32.const 50 - i32.lt_s - if - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load8_u - local.get $0 - i32.const 255 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend8_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|021 end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|027 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $5 - end - local.get $5 - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 end - local.get $4 - local.get $0 - local.get $0 - i32.extend8_s - local.tee $1 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 + end + local.get $9 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|8 local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load8_u - local.get $0 - i32.const 255 + i32.extend8_s + i32.const 50 + i32.lt_s + if + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|024 end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|030 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/map/Map#delete - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find32 - loop $while-continue|033 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load8_u - local.get $0 - i32.const 255 + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + local.get $1 + i32.extend8_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|027 end - br_if $__inlined_func$~lib/map/Map#find32 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|033 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $5 - end - local.get $5 - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|030 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|8 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|8 end + local.get $9 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/map/Map#clear + local.get $9 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $4 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/map/Map#clear - local.get $4 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18432 i32.const 18480 @@ -5197,7 +5226,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -5213,7 +5242,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -5223,29 +5252,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load8_u local.tee $8 i32.store8 local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 local.get $8 - i32.const 255 - i32.and i32.const -1028477379 i32.mul i32.const 374761394 @@ -5255,29 +5282,29 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 i32.load @@ -5290,20 +5317,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 12 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -5332,69 +5359,69 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if local.get $0 - local.get $0 + local.tee $1 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - i32.load8_u local.get $1 + i32.load8_u + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -5402,8 +5429,9 @@ end end i32.const 0 + local.set $1 end - local.tee $0 + local.get $1 i32.eqz if i32.const 1616 @@ -5413,58 +5441,57 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -5481,7 +5508,6 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -5490,8 +5516,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -5562,98 +5589,102 @@ (local $15 i32) (local $16 i32) (local $17 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 + (local $18 i32) + (local $19 i32) + block $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 24 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store - local.get $11 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - local.get $5 - if - local.get $11 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store local.get $5 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $11 - i32.const 3 - i32.store offset=4 - local.get $11 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - if - local.get $11 + i64.const 0 + i64.store offset=8 local.get $5 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $11 - i32.const 4 - i32.store offset=12 - local.get $11 - i32.const 0 - i32.store offset=16 - local.get $11 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $11 - i32.store - loop $for-loop|1 + i32.const 0 + i32.store offset=16 + local.get $5 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store local.get $2 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + local.get $9 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $9 + local.set $2 + local.get $3 if - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $11 + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.store + loop $for-loop|1 + local.get $0 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + if + local.get $2 i32.load - local.get $11 - i32.load offset=4 local.get $2 - local.tee $4 + i32.load offset=4 + local.get $0 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -5688,60 +5719,60 @@ i32.shl i32.add i32.load - local.set $5 - loop $while-continue|0 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $6 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $5 - i32.load8_u - local.get $4 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|0 end + i32.const 0 + local.set $6 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - block $__inlined_func$~lib/map/Map#find1 (result i32) - local.get $11 + local.get $6 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 i32.load - local.get $11 - i32.load offset=4 local.get $2 - local.tee $4 + i32.load offset=4 + local.get $0 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -5776,98 +5807,100 @@ i32.shl i32.add i32.load - local.set $5 - loop $while-continue|02 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $6 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 local.get $5 - i32.load8_u - local.get $4 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|02 end - br_if $__inlined_func$~lib/map/Map#find1 - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|02 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 end - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 local.get $2 - i32.const 255 - i32.and + i32.load offset=20 i32.const 100 - i32.lt_u + i32.ne if - block $__inlined_func$~lib/map/Map#find4 (result i32) - local.get $11 + 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|3 + local.get $0 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + if + local.get $2 i32.load - local.get $11 - i32.load offset=4 local.get $2 - local.tee $4 + i32.load offset=4 + local.get $0 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -5902,78 +5935,80 @@ i32.shl i32.add i32.load - local.set $5 - loop $while-continue|05 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $6 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 local.get $5 - i32.load8_u - local.get $4 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find4 - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|05 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - local.get $2 - i32.const 255 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - block $__inlined_func$~lib/map/Map#find7 (result i32) - local.get $11 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 i32.load - local.get $11 - i32.load offset=4 local.get $2 - local.tee $4 + i32.load offset=4 + local.get $0 + local.tee $3 i32.const 255 i32.and i32.const -1028477379 @@ -6008,334 +6043,338 @@ i32.shl i32.add i32.load - local.set $5 - loop $while-continue|08 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $6 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 local.get $5 - i32.load8_u - local.get $4 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|08 end - br_if $__inlined_func$~lib/map/Map#find7 - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|08 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 end - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $7 i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $11 - i32.load offset=8 - local.set $5 - local.get $11 - i32.load offset=16 - local.tee $6 - local.set $7 - local.get $2 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $8 - i64.const 0 - i64.store - local.get $8 - i32.const 16 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $12 - i32.store - local.get $12 - i32.const 0 - i32.store - local.get $12 - i32.const 0 - i32.store offset=4 - local.get $12 - i32.const 0 - i32.store offset=8 - local.get $12 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $9 - local.get $8 - call $~lib/memory/memory.fill - local.get $12 - local.get $9 - i32.store - local.get $9 - if - local.get $12 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $12 - local.get $9 - i32.store offset=4 - local.get $12 - local.get $8 - i32.store offset=8 - local.get $12 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $12 - i32.store - loop $for-loop|0 - local.get $1 - local.get $6 + i32.store + local.get $2 + i32.load offset=8 + local.set $6 + local.get $2 + i32.load offset=16 + local.tee $5 + local.set $3 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $3 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 65 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/memory/memory.fill + local.get $8 + local.get $0 + i32.store + local.get $0 if - local.get $1 - i32.const 12 - i32.mul + local.get $8 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 + local.get $0 + i32.store offset=4 + local.get $8 + local.get $2 + i32.store offset=8 + local.get $8 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $8 + i32.store + loop $for-loop|0 local.get $5 - i32.add - local.tee $2 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + local.get $19 + i32.gt_s if - local.get $12 - local.get $3 - local.get $2 - i32.load8_u - call $~lib/array/Array#__set - local.get $3 + local.get $19 + i32.const 12 + i32.mul + local.get $6 + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $4 + local.tee $0 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $0 + local.get $2 + i32.load8_u + call $~lib/array/Array#__set + end + local.get $19 i32.const 1 i32.add - local.set $3 + local.set $19 + br $for-loop|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end - end - local.get $12 - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $12 - 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 $12 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $11 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $14 - i32.store - local.get $14 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store - local.get $2 - if - local.get $14 - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 3 - i32.store offset=4 - local.get $14 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store offset=8 - local.get $2 - if - local.get $14 - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 4 - i32.store offset=12 - local.get $14 - i32.const 0 - i32.store offset=16 - local.get $14 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - loop $for-loop|4 - local.get $12 - i32.load offset=12 + local.get $8 + local.get $4 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $8 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + call $~lib/map/Map#values + local.tee $17 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $7 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store local.get $0 - i32.gt_s if - local.get $12 - i32.load offset=12 - local.get $0 - i32.le_u - if - i32.const 1248 - i32.const 1728 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $7 local.get $0 - local.get $12 - i32.load offset=4 - i32.add - i32.load8_u - local.set $2 - local.get $13 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 3 + i32.store offset=4 + local.get $7 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $0 + if + local.get $7 local.get $0 - call $~lib/array/Array#__get - local.set $16 - block $__inlined_func$~lib/map/Map#find10 (result i32) - local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 4 + i32.store offset=12 + local.get $7 + i32.const 0 + i32.store offset=16 + local.get $7 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $13 + i32.store offset=16 + loop $for-loop|4 + local.get $8 + i32.load offset=12 + local.get $1 + i32.gt_s + if + local.get $1 + local.tee $6 + local.get $8 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $8 + i32.load offset=4 + i32.add + i32.load8_u + local.set $2 + local.get $17 + local.get $6 + call $~lib/array/Array#__get + local.set $12 + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 local.get $2 - local.tee $1 + local.tee $0 i32.const 255 i32.and i32.const -1028477379 @@ -6346,24 +6385,24 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 i32.const 15 i32.shr_u - local.get $3 + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 i32.const 13 i32.shr_u - local.get $3 + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 i32.const 16 i32.shr_u - local.get $3 + local.get $1 i32.xor i32.and i32.const 2 @@ -6371,54 +6410,56 @@ i32.add i32.load local.set $3 - loop $while-continue|011 - local.get $3 - if + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 local.get $3 - local.get $3 - i32.load offset=8 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + if local.get $3 - i32.load8_u - local.get $1 - i32.const 255 + i32.load offset=8 + local.tee $1 + i32.const 1 i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find10 - drop - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|011 + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $1 + i32.const -2 + i32.and + local.set $3 + br $while-continue|011 + end end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/map/Map#find13 (result i32) - local.get $11 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $16 + local.get $12 i32.const 20 i32.sub - local.tee $3 + local.tee $1 i32.const 255 i32.and i32.const -1028477379 @@ -6429,440 +6470,446 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 i32.const 15 i32.shr_u - local.get $1 + local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 i32.const 13 i32.shr_u - local.get $1 + local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 i32.const 16 i32.shr_u - local.get $1 + local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - loop $while-continue|014 - local.get $1 - if - local.get $1 - local.get $1 - i32.load offset=8 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load8_u + local.set $3 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $3 + if local.get $3 - i32.const 255 + i32.load offset=8 + local.tee $0 + i32.const 1 i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find13 - drop - local.get $4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|014 - end - end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - local.set $3 - local.get $14 - i32.load - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $6 - local.get $14 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $1 - if - local.get $1 - i32.load offset=4 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load8_u - local.get $3 - i32.const 255 + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find13 + local.get $0 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|014 end - br_if $__inlined_func$~lib/map/Map#find - local.get $4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|015 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 local.get $3 - i32.store8 offset=1 - else - local.get $14 - i32.load offset=16 - local.get $14 - i32.load offset=12 - i32.eq + i32.const 0 + i32.ne + i32.eqz if - local.get $14 - i32.load offset=20 - local.get $14 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $14 - i32.load offset=4 - else - local.get $14 - 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 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - local.get $8 - i32.const 1 - i32.add - local.tee $1 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 - local.get $14 - i32.load offset=8 - local.tee $5 - local.get $14 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $10 - local.get $4 - local.set $1 - loop $while-continue|0216 - local.get $5 - local.get $10 - i32.ne + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + local.set $5 + local.get $7 + local.tee $1 + i32.load + local.get $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + local.tee $16 + local.get $1 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 + local.get $3 if - local.get $5 + local.get $3 i32.load offset=4 + local.tee $0 i32.const 1 i32.and - i32.eqz - if - local.get $1 - local.get $5 + if (result i32) + i32.const 0 + else + local.get $3 i32.load8_u - local.tee $17 - i32.store8 - local.get $1 local.get $5 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $17 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $17 - local.get $17 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $17 - local.get $17 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $17 - local.get $17 - i32.const 16 - i32.shr_u - i32.xor - local.get $8 + i32.const 255 i32.and - i32.const 2 - i32.shl - local.get $9 - i32.add - local.tee $17 - i32.load - i32.store offset=4 - local.get $17 - local.get $1 - i32.store - local.get $1 - i32.const 8 - i32.add - local.set $1 + i32.eq end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0216 + br_if $__inlined_func$~lib/map/Map#find + local.get $0 + i32.const -2 + i32.and + local.set $3 + br $while-continue|015 end end - local.get $14 - local.get $9 - i32.store - local.get $9 - if - local.get $14 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - local.get $8 - i32.store offset=4 - local.get $14 - local.get $4 - i32.store offset=8 - local.get $4 + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $5 + i32.store8 offset=1 + else + local.get $1 + i32.load offset=16 + local.get $1 + i32.load offset=12 + i32.eq if - local.get $14 + local.get $1 + local.tee $4 + i32.load offset=20 + local.get $1 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $18 + i32.const 1 + i32.add + local.tee $0 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $15 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link + i32.load offset=8 + local.tee $19 + local.get $4 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $14 + local.get $3 + local.set $0 + loop $while-continue|00 + local.get $14 + local.get $19 + i32.ne + if + local.get $19 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $19 + i32.load8_u + local.tee $10 + i32.store8 + local.get $0 + local.get $19 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + local.get $10 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $10 + local.get $10 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $10 + local.get $10 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $10 + local.get $10 + i32.const 16 + i32.shr_u + i32.xor + local.get $18 + i32.and + i32.const 2 + i32.shl + local.get $11 + i32.add + local.tee $10 + i32.load + i32.store offset=4 + local.get $10 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $19 + i32.const 8 + i32.add + local.set $19 + br $while-continue|00 + end + end + local.get $4 + local.get $11 + i32.store + local.get $11 + if + local.get $1 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $18 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $1 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $15 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $14 - local.get $7 - i32.store offset=12 - local.get $14 - local.get $14 - i32.load offset=20 - i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.load offset=8 + local.tee $3 + i32.store + local.get $1 + local.get $1 + i32.load offset=16 + local.tee $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + i32.store offset=16 + local.get $0 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.store8 + local.get $3 + local.get $5 + i32.store8 offset=1 + local.get $1 + local.get $1 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $1 + i32.load + local.get $1 + i32.load offset=4 + local.get $16 + 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 $14 - i32.load offset=8 - local.tee $1 - i32.store - local.get $14 - local.get $14 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.store8 - local.get $1 - local.get $3 - i32.store8 offset=1 - local.get $14 - local.get $14 - i32.load offset=20 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.store offset=20 - local.get $1 - local.get $14 - i32.load - local.get $14 - i32.load offset=4 + global.set $~lib/memory/__stack_pointer + local.get $13 + local.get $12 + i32.const 20 + i32.sub + local.tee $0 + local.get $0 + call $~lib/map/Map#set local.get $6 - i32.and - i32.const 2 - i32.shl + i32.const 1 i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $1 - i32.store + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $16 - i32.const 20 - i32.sub - local.tee $1 - local.get $1 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 end - end - local.get $14 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|6 - local.get $0 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u + local.get $7 + i32.load offset=20 + i32.const 100 + i32.ne if - block $__inlined_func$~lib/map/Map#find18 (result i32) - local.get $11 + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|6 + local.get $1 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + if + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 255 i32.and i32.const -1028477379 @@ -6897,73 +6944,75 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|019 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find17 local.get $2 - i32.load8_u - local.get $1 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|018 end - br_if $__inlined_func$~lib/map/Map#find18 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|019 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - call $~lib/map/Map#delete - block $__inlined_func$~lib/map/Map#find21 (result i32) - local.get $11 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 255 i32.and i32.const -1028477379 @@ -6998,80 +7047,80 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|022 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 local.get $2 - i32.load8_u - local.get $1 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|021 end - br_if $__inlined_func$~lib/map/Map#find21 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|022 end + i32.const 0 + local.set $3 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|6 end - end - local.get $11 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|8 - local.get $0 - i32.const 255 - i32.and + local.get $9 + i32.load offset=20 i32.const 50 - i32.lt_u + i32.ne if - block $__inlined_func$~lib/map/Map#find24 (result i32) - local.get $11 + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|8 + local.get $1 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + if + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 255 i32.and i32.const -1028477379 @@ -7106,60 +7155,60 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|025 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 local.get $2 - i32.load8_u - local.get $1 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|024 end - br_if $__inlined_func$~lib/map/Map#find24 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|025 end + i32.const 0 + local.set $3 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - block $__inlined_func$~lib/map/Map#find27 (result i32) - local.get $11 + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 255 i32.and i32.const -1028477379 @@ -7194,56 +7243,58 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|028 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 local.get $2 - i32.load8_u - local.get $1 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|027 end - br_if $__inlined_func$~lib/map/Map#find27 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|028 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - call $~lib/map/Map#delete - block $__inlined_func$~lib/map/Map#find30 (result i32) - local.get $11 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 255 i32.and i32.const -1028477379 @@ -7278,81 +7329,83 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|031 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $0 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 local.get $2 - i32.load8_u - local.get $1 - i32.const 255 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|030 end - br_if $__inlined_func$~lib/map/Map#find30 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|031 end + i32.const 0 + local.set $3 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|8 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|8 end + local.get $9 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/map/Map#clear + local.get $9 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $11 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $~lib/map/Map#clear - local.get $11 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18432 i32.const 18480 @@ -7396,7 +7449,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -7412,7 +7465,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -7422,23 +7475,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load16_s local.tee $8 i32.store16 local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -7453,29 +7506,29 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 i32.load @@ -7488,20 +7541,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 12 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -7530,68 +7583,68 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if local.get $0 - local.get $0 + local.tee $1 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - i32.load16_u local.get $1 + i32.load16_u + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -7599,8 +7652,9 @@ end end i32.const 0 + local.set $1 end - local.tee $0 + local.get $1 i32.eqz if i32.const 1616 @@ -7610,7 +7664,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) @@ -7655,51 +7709,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -7716,7 +7769,6 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -7725,8 +7777,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -7797,1773 +7850,1805 @@ (local $15 i32) (local $16 i32) (local $17 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 + (local $18 i32) + (local $19 i32) + block $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i64.const 0 - i64.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=16 - local.get $5 - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 24 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - local.get $6 - if - local.get $3 - local.get $6 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - i32.const 3 - i32.store offset=4 - local.get $3 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store offset=8 - local.get $6 - if - local.get $3 - local.get $6 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - i32.const 4 - i32.store offset=12 - local.get $3 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $3 - i32.store - loop $for-loop|1 - local.get $4 - i32.extend16_s - i32.const 100 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i64.const 0 + i64.store offset=8 + local.get $5 + i32.const 0 + i32.store offset=16 + local.get $5 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + local.get $9 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $9 + local.set $2 + local.get $3 if + local.get $2 local.get $3 - i32.load + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 3 + i32.store offset=4 + local.get $2 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + if + local.get $2 local.get $3 - i32.load offset=4 - local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.store + loop $for-loop|1 + local.get $0 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 $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 100 + i32.lt_s + if + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|0 end + i32.const 0 + local.set $6 end - i32.const 0 - local.set $5 - end - local.get $5 - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - local.get $4 - i32.extend16_s - local.tee $5 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $5 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find1 - loop $while-continue|02 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.get $6 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.extend16_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|02 end - br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|02 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - call $~lib/map/Map#get - local.get $4 - i32.extend16_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 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.extend16_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 $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 end - end - local.get $3 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $4 - loop $for-loop|3 - local.get $4 - i32.extend16_s + local.get $2 + i32.load offset=20 i32.const 100 - i32.lt_s + i32.ne if - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $4 + 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|3 + local.get $0 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 $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find4 - loop $while-continue|05 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|05 - end - end - i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz + i32.const 100 + i32.lt_s if - i32.const 0 - i32.const 1568 + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - call $~lib/map/Map#get - local.get $4 - i32.extend16_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - local.get $4 - i32.extend16_s - local.tee $5 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $3 - i32.load - local.get $3 - i32.load offset=4 - local.get $5 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - local.get $5 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - local.get $5 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - local.get $5 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find7 - loop $while-continue|08 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|08 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - call $~lib/map/Map#get - local.get $4 - i32.extend16_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 $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|3 - end - end - local.get $3 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $4 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $6 - i32.const 0 - i32.store - local.get $3 - local.tee $4 - i32.load offset=8 - local.set $7 - local.get $3 - i32.load offset=16 - local.tee $8 - local.set $9 - local.get $6 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i32.const 16 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $9 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.const 8 - local.get $9 - i32.const 8 - i32.gt_u - select - i32.const 1 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=4 - local.get $11 - local.get $10 - call $~lib/memory/memory.fill - local.get $3 - local.get $11 - i32.store - local.get $11 - if - local.get $3 - local.get $11 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $3 - local.get $11 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $3 - i32.store - loop $for-loop|0 - local.get $2 - local.get $8 - i32.lt_s - if - local.get $2 - i32.const 12 - i32.mul - local.get $7 - i32.add - local.tee $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $1 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.extend16_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.extend16_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + 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 $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $5 + i32.const -2 + i32.and + local.set $6 + br $while-continue|08 + end + end + i32.const 0 + local.set $6 + end local.get $6 - i32.load16_s - call $~lib/array/Array#__set - local.get $1 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.extend16_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 $0 i32.const 1 i32.add - local.set $1 + local.set $0 + br $for-loop|3 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end - end - local.get $3 - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $3 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $14 - i32.store - local.get $14 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store - local.get $2 - if - local.get $14 local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 3 - i32.store offset=4 - local.get $14 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store offset=8 - local.get $2 - if - local.get $14 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 4 - i32.store offset=12 - local.get $14 - i32.const 0 - i32.store offset=16 - local.get $14 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - loop $for-loop|4 + i32.load offset=8 + local.set $6 + local.get $2 + i32.load offset=16 + local.tee $5 + local.set $3 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + local.get $8 + i32.const 0 + i32.store offset=12 local.get $3 - i32.load offset=12 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 65 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + i32.const 1 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/memory/memory.fill + local.get $8 + local.get $0 + i32.store local.get $0 - i32.gt_s if + local.get $8 local.get $0 - local.tee $1 - local.get $3 - i32.load offset=12 - i32.ge_u + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 + local.get $0 + i32.store offset=4 + local.get $8 + local.get $2 + i32.store offset=8 + local.get $8 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $8 + i32.store + loop $for-loop|0 + local.get $5 + local.get $19 + i32.gt_s if - i32.const 1248 - i32.const 1728 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $19 + i32.const 12 + i32.mul + local.get $6 + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $4 + local.tee $0 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $0 + local.get $2 + i32.load16_s + call $~lib/array/Array#__set + end + local.get $19 + i32.const 1 + i32.add + local.set $19 + br $for-loop|0 end - local.get $3 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - local.get $13 - local.get $1 - call $~lib/array/Array#__get - local.set $16 - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $5 - local.tee $6 - 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 + end + local.get $8 + local.get $4 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $8 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + call $~lib/map/Map#values + local.tee $17 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $7 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $0 + if + local.get $7 local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 3 + i32.store offset=4 + local.get $7 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $0 + if + local.get $7 local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find12 - loop $while-continue|013 - 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 $6 - i32.const 65535 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 4 + i32.store offset=12 + local.get $7 + i32.const 0 + i32.store offset=16 + local.get $7 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $13 + i32.store offset=16 + loop $for-loop|4 + local.get $8 + i32.load offset=12 + local.get $1 + i32.gt_s + if + local.get $1 + local.tee $6 + local.get $8 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $2 + local.get $17 + local.get $6 + call $~lib/array/Array#__get + local.set $12 + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $2 + local.tee $0 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $1 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find10 + local.get $1 + i32.const -2 + i32.and + local.set $3 + br $while-continue|011 end - br_if $__inlined_func$~lib/map/Map#find12 - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|013 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $16 - i32.const 20 - i32.sub - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $7 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $12 + i32.const 20 + i32.sub + local.tee $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 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find13 local.get $0 - i32.load16_u - local.get $2 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|014 end - br_if $__inlined_func$~lib/map/Map#find15 - local.get $7 - i32.const -2 - i32.and - local.set $0 - br $while-continue|016 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $14 - i32.load - local.get $5 - 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 - local.tee $8 - local.get $14 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|017 - local.get $2 - if - local.get $2 - local.tee $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.store + local.get $2 + local.set $5 + local.get $7 + local.tee $1 + i32.load + local.get $2 + 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 + local.tee $16 + local.get $1 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $5 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $0 - i32.load16_u - local.get $6 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|015 end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 - i32.and - local.set $2 - br $while-continue|017 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $0 - end - local.get $0 - if - local.get $0 - local.get $6 - i32.store16 offset=2 - else - local.get $14 - i32.load offset=16 - local.get $14 - i32.load offset=12 - i32.eq + local.get $3 if - local.get $14 - i32.load offset=20 - local.get $14 + local.get $3 + local.get $5 + i32.store16 offset=2 + else + local.get $1 + i32.load offset=16 + local.get $1 i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $14 - i32.load offset=4 - else - local.get $14 - i32.load offset=4 + i32.eq + if + local.get $1 + local.tee $4 + i32.load offset=20 + local.get $1 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $18 i32.const 1 + i32.add + local.tee $0 + i32.const 2 i32.shl - i32.const 1 - i32.or + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $15 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $4 + i32.load offset=8 + local.tee $19 + local.get $4 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $14 + local.get $3 + local.set $0 + loop $while-continue|00 + local.get $14 + local.get $19 + i32.ne + if + local.get $19 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $19 + i32.load16_s + local.tee $10 + i32.store16 + local.get $0 + local.get $19 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $0 + local.get $10 + 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 $10 + local.get $10 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $10 + local.get $10 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $10 + local.get $10 + i32.const 16 + i32.shr_u + i32.xor + local.get $18 + i32.and + i32.const 2 + i32.shl + local.get $11 + i32.add + local.tee $10 + i32.load + i32.store offset=4 + local.get $10 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $19 + i32.const 8 + i32.add + local.set $19 + br $while-continue|00 + end + end + local.get $4 + local.get $11 + i32.store + local.get $11 + if + local.get $1 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $18 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $1 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $15 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $3 + i32.store + local.get $1 + local.get $1 + i32.load offset=16 local.tee $0 - i64.const 0 - i64.store - local.get $0 - local.get $10 i32.const 1 i32.add - local.tee $0 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 - i32.store - global.get $~lib/memory/__stack_pointer + i32.store offset=16 local.get $0 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 $2 - i32.store offset=4 - local.get $14 - i32.load offset=8 - local.tee $7 - local.get $14 - i32.load offset=16 - i32.const 3 - i32.shl + local.get $3 i32.add - local.set $12 - local.get $2 - local.set $0 - loop $while-continue|018 - local.get $7 - local.get $12 - i32.ne - if - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $7 - i32.load16_s - local.tee $17 - i32.store16 - local.get $0 - local.get $7 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $0 - local.get $17 - 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 $17 - local.get $17 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $17 - local.get $17 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $17 - local.get $17 - i32.const 16 - i32.shr_u - i32.xor - local.get $10 - i32.and - i32.const 2 - i32.shl - local.get $11 - i32.add - local.tee $17 - i32.load - i32.store offset=4 - local.get $17 - local.get $0 - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - end - local.get $7 - i32.const 8 - i32.add - local.set $7 - br $while-continue|018 - end - end - local.get $14 - local.get $11 - i32.store - local.get $11 - if - local.get $14 - local.get $11 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - local.get $10 - i32.store offset=4 - local.get $14 - local.get $2 - i32.store offset=8 + local.tee $3 local.get $2 - if - local.get $14 - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - local.get $9 - i32.store offset=12 - local.get $14 - local.get $14 + i32.store16 + local.get $3 + local.get $5 + i32.store16 offset=2 + local.get $1 + local.get $1 i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + i32.store offset=20 + local.get $3 + local.get $1 + i32.load + local.get $1 + i32.load offset=4 + local.get $16 + 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 $14 - i32.load offset=8 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + local.get $12 + i32.const 20 + i32.sub local.tee $0 - i32.store - local.get $14 - local.get $14 - i32.load offset=16 - local.tee $2 + local.get $0 + call $~lib/map/Map#set + local.get $6 i32.const 1 i32.add - i32.store offset=16 + local.set $1 + br $for-loop|4 + end + end + local.get $7 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|6 + local.get $1 + i32.extend16_s + i32.const 50 + i32.lt_s + if + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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.const 3 + 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 + i32.and + i32.const 2 i32.shl - local.get $0 i32.add - local.tee $0 - local.get $5 - i32.store16 - local.get $0 - local.get $6 - i32.store16 offset=2 - local.get $14 - local.get $14 - i32.load offset=20 - i32.const 1 + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find17 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|018 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.extend16_s + i32.const 20 i32.add - i32.store offset=20 - local.get $0 - local.get $14 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 i32.load - local.get $14 + local.get $9 i32.load offset=4 - local.get $8 + local.get $1 + local.tee $0 + 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 i32.and i32.const 2 i32.shl i32.add - local.tee $2 i32.load - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $16 - i32.const 20 - i32.sub - local.tee $0 - local.get $0 - call $~lib/map/Map#set - local.get $1 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 - end - end - local.get $14 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|6 - local.get $0 - i32.extend16_s - i32.const 50 - i32.lt_s - if - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find20 - loop $while-continue|021 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load16_u - local.get $0 - i32.const 65535 + local.set $3 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find20 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|021 - end - end - i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.extend16_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/map/Map#delete - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find23 - loop $while-continue|024 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load16_u - local.get $0 - i32.const 65535 + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 + local.get $2 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|021 end - br_if $__inlined_func$~lib/map/Map#find23 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|024 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $5 - end - local.get $5 - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|6 end - end - local.get $4 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|8 - local.get $0 - i32.extend16_s + local.get $9 + i32.load offset=20 i32.const 50 - i32.lt_s + i32.ne if - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|8 local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find26 - loop $while-continue|027 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load16_u - local.get $0 - i32.const 65535 + i32.extend16_s + i32.const 50 + i32.lt_s + if + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|024 end - br_if $__inlined_func$~lib/map/Map#find26 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|027 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $5 - end - local.get $5 - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - local.get $0 - i32.extend16_s - local.tee $1 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find29 - loop $while-continue|030 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load16_u - local.get $0 - i32.const 65535 + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + local.get $1 + i32.extend16_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|027 end - br_if $__inlined_func$~lib/map/Map#find29 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|030 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - local.set $5 - end - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/map/Map#delete - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $0 - 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 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find32 - loop $while-continue|033 - local.get $5 - if - local.get $5 - i32.load offset=8 - local.tee $1 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load16_u - local.get $0 - i32.const 65535 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 + i32.load + local.get $9 + i32.load offset=4 + local.get $1 + local.tee $0 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 + local.get $2 + i32.const -2 + i32.and + local.set $3 + br $while-continue|030 end - br_if $__inlined_func$~lib/map/Map#find32 - local.get $1 - i32.const -2 - i32.and - local.set $5 - br $while-continue|033 end + i32.const 0 + local.set $3 end - i32.const 0 - local.set $5 - end - local.get $5 - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|8 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|8 end + local.get $9 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/map/Map#clear + local.get $9 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $4 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/map/Map#clear - local.get $4 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18432 i32.const 18480 @@ -9607,7 +9692,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -9623,7 +9708,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -9633,29 +9718,27 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load16_u local.tee $8 i32.store16 local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 local.get $8 - i32.const 65535 - i32.and i32.const -1028477379 i32.mul i32.const 374761395 @@ -9665,29 +9748,29 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 i32.load @@ -9700,20 +9783,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 12 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -9742,69 +9825,69 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if local.get $0 - local.get $0 + local.tee $1 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - i32.load16_u local.get $1 + i32.load16_u + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -9812,8 +9895,9 @@ end end i32.const 0 + local.set $1 end - local.tee $0 + local.get $1 i32.eqz if i32.const 1616 @@ -9823,58 +9907,57 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -9891,7 +9974,6 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -9900,8 +9982,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -9972,98 +10055,102 @@ (local $15 i32) (local $16 i32) (local $17 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 + (local $18 i32) + (local $19 i32) + block $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 24 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store - local.get $11 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - local.get $5 - if - local.get $11 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store local.get $5 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $11 - i32.const 3 - i32.store offset=4 - local.get $11 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - if - local.get $11 + i64.const 0 + i64.store offset=8 local.get $5 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $11 - i32.const 4 - i32.store offset=12 - local.get $11 - i32.const 0 - i32.store offset=16 - local.get $11 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $11 - i32.store - loop $for-loop|1 + i32.const 0 + i32.store offset=16 + local.get $5 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + local.get $9 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store + local.get $9 + local.set $2 + local.get $3 + if + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 3 + i32.store offset=4 local.get $2 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=8 + local.get $3 if - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $11 + local.get $2 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + i32.const 4 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.store + loop $for-loop|1 + local.get $0 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + if + local.get $2 i32.load - local.get $11 - i32.load offset=4 local.get $2 - local.tee $4 + i32.load offset=4 + local.get $0 + local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -10098,60 +10185,60 @@ i32.shl i32.add i32.load - local.set $5 - loop $while-continue|0 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $6 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|0 end - br_if $__inlined_func$~lib/map/Map#find - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|0 end + i32.const 0 + local.set $6 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - block $__inlined_func$~lib/map/Map#find1 (result i32) - local.get $11 + local.get $6 + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $2 i32.load - local.get $11 - i32.load offset=4 local.get $2 - local.tee $4 + i32.load offset=4 + local.get $0 + local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -10186,204 +10273,100 @@ i32.shl i32.add i32.load - local.set $5 - loop $while-continue|02 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $6 + block $__inlined_func$~lib/map/Map#find1 + loop $while-continue|02 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find1 local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|02 end - br_if $__inlined_func$~lib/map/Map#find1 - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|02 end + i32.const 0 + local.set $6 end + local.get $6 i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - if - block $__inlined_func$~lib/map/Map#find4 (result i32) - local.get $11 - i32.load - local.get $11 - i32.load offset=4 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.tee $4 + local.get $0 + call $~lib/map/Map#get + local.get $0 i32.const 65535 i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl + i32.const 10 i32.add - i32.load - local.set $5 - loop $while-continue|05 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find4 - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|05 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $11 - local.get $2 - call $~lib/map/Map#get - local.get $2 + end + local.get $2 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 i32.const 65535 i32.and - i32.const 10 - i32.add - i32.ne + i32.const 100 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - block $__inlined_func$~lib/map/Map#find7 (result i32) - local.get $11 + local.get $2 i32.load - local.get $11 - i32.load offset=4 local.get $2 - local.tee $4 + i32.load offset=4 + local.get $0 + local.tee $3 i32.const 65535 i32.and i32.const -1028477379 @@ -10418,338 +10401,450 @@ i32.shl i32.add i32.load - local.set $5 - loop $while-continue|08 - local.get $5 - if - local.get $5 - local.get $5 - i32.load offset=8 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $6 + block $__inlined_func$~lib/map/Map#find4 + loop $while-continue|05 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find4 local.get $5 - i32.load16_u - local.get $4 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $6 + br $while-continue|05 end - br_if $__inlined_func$~lib/map/Map#find7 - drop - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|08 end - end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $2 - call $~lib/map/Map#get - local.get $2 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|3 - end - end - local.get $11 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $11 - i32.load offset=8 - local.set $5 - local.get $11 - i32.load offset=16 - local.tee $6 - local.set $7 - local.get $2 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $8 - i64.const 0 - i64.store - local.get $8 - i32.const 16 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $12 - i32.store - local.get $12 - i32.const 0 - i32.store - local.get $12 - i32.const 0 - i32.store offset=4 - local.get $12 - i32.const 0 - i32.store offset=8 - local.get $12 - i32.const 0 - i32.store offset=12 - local.get $7 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 65 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - i32.const 1 - i32.shl - local.tee $8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $9 - i32.store offset=4 - local.get $9 - local.get $8 - call $~lib/memory/memory.fill - local.get $12 - local.get $9 - i32.store - local.get $9 - if - local.get $12 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $12 - local.get $9 - i32.store offset=4 - local.get $12 - local.get $8 - i32.store offset=8 - local.get $12 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $12 - i32.store - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - i32.const 12 - i32.mul - local.get $5 - i32.add - local.tee $2 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $12 - local.get $3 + i32.const 0 + local.set $6 + end + local.get $6 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.load16_u - call $~lib/array/Array#__set - local.get $3 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $2 + i32.load + local.get $2 + i32.load offset=4 + local.get $0 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + block $__inlined_func$~lib/map/Map#find7 + loop $while-continue|08 + local.get $6 + if + local.get $6 + i32.load offset=8 + local.tee $5 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $6 + i32.load16_u + local.get $3 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find7 + local.get $5 + i32.const -2 + i32.and + local.set $6 + br $while-continue|08 + end + end + i32.const 0 + local.set $6 + end + local.get $6 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 + br $for-loop|3 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end - end - local.get $12 - local.get $3 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity - local.get $12 - 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 $12 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $11 - call $~lib/map/Map#values - local.tee $13 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $14 - i32.store - local.get $14 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store - local.get $2 - if - local.get $14 local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 3 - i32.store offset=4 - local.get $14 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store offset=8 - local.get $2 - if - local.get $14 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $10 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i32.const 0 + i32.store local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - i32.const 4 - i32.store offset=12 - local.get $14 - i32.const 0 - i32.store offset=16 - local.get $14 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $14 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - call $~lib/map/Map#constructor - local.tee $15 - i32.store offset=16 - loop $for-loop|4 - local.get $12 - i32.load offset=12 + i32.load offset=8 + local.set $6 + local.get $2 + i32.load offset=16 + local.tee $5 + local.set $3 + local.get $7 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store local.get $0 - i32.gt_s + i32.const 16 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i32.store + local.get $8 + i32.const 0 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $3 + i32.const 536870910 + i32.gt_u if - local.get $12 - i32.load offset=12 + i32.const 1456 + i32.const 1728 + i32.const 65 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8 + local.get $3 + i32.const 8 + i32.gt_u + select + i32.const 1 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/memory/memory.fill + local.get $8 + local.get $0 + i32.store + local.get $0 + if + local.get $8 local.get $0 - i32.le_u + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 + local.get $0 + i32.store offset=4 + local.get $8 + local.get $2 + i32.store offset=8 + local.get $8 + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + local.get $8 + i32.store + loop $for-loop|0 + local.get $5 + local.get $19 + i32.gt_s if - i32.const 1248 - i32.const 1728 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $19 + i32.const 12 + i32.mul + local.get $6 + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $4 + local.tee $0 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $0 + local.get $2 + i32.load16_u + call $~lib/array/Array#__set + end + local.get $19 + i32.const 1 + i32.add + local.set $19 + br $for-loop|0 end - local.get $12 - i32.load offset=4 + end + local.get $8 + local.get $4 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity + local.get $8 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $9 + call $~lib/map/Map#values + local.tee $17 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + local.get $7 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $0 + if + local.get $7 local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $2 - local.get $13 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 3 + i32.store offset=4 + local.get $7 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=8 + local.get $0 + if + local.get $7 local.get $0 - call $~lib/array/Array#__get - local.set $16 - block $__inlined_func$~lib/map/Map#find10 (result i32) - local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $7 + i32.const 4 + i32.store offset=12 + local.get $7 + i32.const 0 + i32.store offset=16 + local.get $7 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $~lib/map/Map#constructor + local.tee $13 + i32.store offset=16 + loop $for-loop|4 + local.get $8 + i32.load offset=12 + local.get $1 + i32.gt_s + if + local.get $1 + local.tee $6 + local.get $8 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + local.get $17 + local.get $6 + call $~lib/array/Array#__get + local.set $12 + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 local.get $2 - local.tee $1 + local.tee $0 i32.const 65535 i32.and i32.const -1028477379 @@ -10760,24 +10855,24 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $1 i32.const 15 i32.shr_u - local.get $3 + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $1 i32.const 13 i32.shr_u - local.get $3 + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $1 i32.const 16 i32.shr_u - local.get $3 + local.get $1 i32.xor i32.and i32.const 2 @@ -10785,54 +10880,56 @@ i32.add i32.load local.set $3 - loop $while-continue|011 - local.get $3 - if - local.get $3 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 local.get $3 - i32.load offset=8 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + if local.get $3 - i32.load16_u + i32.load offset=8 + local.tee $1 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find10 local.get $1 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|011 end - br_if $__inlined_func$~lib/map/Map#find10 - drop - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|011 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/map/Map#find13 (result i32) - local.get $11 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $16 + local.get $12 i32.const 20 i32.sub - local.tee $3 + local.tee $1 i32.const 65535 i32.and i32.const -1028477379 @@ -10843,440 +10940,446 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 i32.const 15 i32.shr_u - local.get $1 + local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 i32.const 13 i32.shr_u - local.get $1 + local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 i32.const 16 i32.shr_u - local.get $1 + local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - loop $while-continue|014 - local.get $1 - if - local.get $1 - local.get $1 - i32.load offset=8 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load16_u + local.set $3 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $0 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find13 + local.get $0 + i32.const -2 + i32.and + local.set $3 + br $while-continue|014 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + local.set $5 + local.get $7 + local.tee $1 + i32.load + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + local.tee $16 + local.get $1 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|015 + local.get $3 + if local.get $3 - i32.const 65535 + i32.load offset=4 + local.tee $0 + i32.const 1 i32.and - i32.eq + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $5 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $0 + i32.const -2 + i32.and + local.set $3 + br $while-continue|015 end - br_if $__inlined_func$~lib/map/Map#find13 - drop - local.get $4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|014 end + i32.const 0 + local.set $3 end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - local.set $3 - local.get $14 - i32.load - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $6 - local.get $14 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 + local.get $3 + if + local.get $3 + local.get $5 + i32.store16 offset=2 + else + local.get $1 + i32.load offset=16 local.get $1 + i32.load offset=12 + i32.eq if local.get $1 - i32.load offset=4 local.tee $4 - i32.const 1 - i32.and + i32.load offset=20 + local.get $1 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s if (result i32) - i32.const 0 + local.get $4 + i32.load offset=4 else - local.get $1 - i32.load16_u - local.get $3 - i32.const 65535 - i32.and - i32.eq + local.get $4 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - br_if $__inlined_func$~lib/map/Map#find - local.get $4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|015 - end - end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 - local.get $3 - i32.store16 offset=2 - else - local.get $14 - i32.load offset=16 - local.get $14 - i32.load offset=12 - i32.eq - if - local.get $14 - i32.load offset=20 - local.get $14 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $14 - i32.load offset=4 - else - local.get $14 - i32.load offset=4 + local.set $18 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + local.get $18 i32.const 1 + i32.add + local.tee $0 + i32.const 2 i32.shl - i32.const 1 - i32.or - end - local.set $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 2020 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - local.get $8 - i32.const 1 - i32.add - local.tee $1 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 - local.get $14 - i32.load offset=8 - local.tee $5 - local.get $14 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $10 - local.get $4 - local.set $1 - loop $while-continue|0216 - 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 $1 - local.get $5 - i32.load16_u - local.tee $17 - i32.store16 - local.get $1 - local.get $5 - i32.load16_u offset=2 - i32.store16 offset=2 - local.get $1 - local.get $17 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $17 - local.get $17 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $17 - local.get $17 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $17 - local.get $17 - i32.const 16 - i32.shr_u - i32.xor - local.get $8 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $15 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $4 + i32.load offset=8 + local.tee $19 + local.get $4 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $14 + local.get $3 + local.set $0 + loop $while-continue|00 + local.get $14 + local.get $19 + i32.ne + if + local.get $19 + i32.load offset=4 + i32.const 1 i32.and - i32.const 2 - i32.shl - local.get $9 - i32.add - local.tee $17 - i32.load - i32.store offset=4 - local.get $17 - local.get $1 - i32.store - local.get $1 + i32.eqz + if + local.get $0 + local.get $19 + i32.load16_u + local.tee $10 + i32.store16 + local.get $0 + local.get $19 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $0 + local.get $10 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $10 + local.get $10 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $10 + local.get $10 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $10 + local.get $10 + i32.const 16 + i32.shr_u + i32.xor + local.get $18 + i32.and + i32.const 2 + i32.shl + local.get $11 + i32.add + local.tee $10 + i32.load + i32.store offset=4 + local.get $10 + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + end + local.get $19 i32.const 8 i32.add - local.set $1 + local.set $19 + br $while-continue|00 end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|0216 end - end - local.get $14 - local.get $9 - i32.store - local.get $9 - if - local.get $14 - local.get $9 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $14 - local.get $8 - i32.store offset=4 - local.get $14 - local.get $4 - i32.store offset=8 - local.get $4 - if - local.get $14 local.get $4 - call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $11 + i32.store + local.get $11 + if + local.get $1 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $18 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $1 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $15 + i32.store offset=12 + local.get $1 + local.get $1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $14 - local.get $7 - i32.store offset=12 - local.get $14 - local.get $14 - i32.load offset=20 - i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.load offset=8 + local.tee $3 + i32.store + local.get $1 + local.get $1 + i32.load offset=16 + local.tee $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + i32.store offset=16 + local.get $0 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.store16 + local.get $3 + local.get $5 + i32.store16 offset=2 + local.get $1 + local.get $1 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $1 + i32.load + local.get $1 + i32.load offset=4 + local.get $16 + 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 $14 - i32.load offset=8 - local.tee $1 - i32.store - local.get $14 - local.get $14 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.store16 - local.get $1 - local.get $3 - i32.store16 offset=2 - local.get $14 - local.get $14 - i32.load offset=20 - i32.const 1 + i32.const 4 i32.add - i32.store offset=20 - local.get $1 - local.get $14 - i32.load - local.get $14 - i32.load offset=4 + global.set $~lib/memory/__stack_pointer + local.get $13 + local.get $12 + i32.const 20 + i32.sub + local.tee $0 + local.get $0 + call $~lib/map/Map#set local.get $6 - i32.and - i32.const 2 - i32.shl + i32.const 1 i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $1 - i32.store + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $16 - i32.const 20 - i32.sub - local.tee $1 - local.get $1 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 end - end - local.get $14 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $15 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|6 - local.get $0 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u + local.get $7 + i32.load offset=20 + i32.const 100 + i32.ne if - block $__inlined_func$~lib/map/Map#find18 (result i32) - local.get $11 + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $13 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|6 + local.get $1 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u + if + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 65535 i32.and i32.const -1028477379 @@ -11311,73 +11414,75 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|019 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find17 local.get $2 - i32.load16_u - local.get $1 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|018 end - br_if $__inlined_func$~lib/map/Map#find18 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|019 end + i32.const 0 + local.set $3 end + local.get $3 i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - call $~lib/map/Map#delete - block $__inlined_func$~lib/map/Map#find21 (result i32) - local.get $11 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#get + local.get $1 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 65535 i32.and i32.const -1028477379 @@ -11412,80 +11517,80 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|022 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find20 local.get $2 - i32.load16_u - local.get $1 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|021 end - br_if $__inlined_func$~lib/map/Map#find21 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|022 end + i32.const 0 + local.set $3 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|6 end - end - local.get $11 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|8 - local.get $0 - i32.const 65535 - i32.and + local.get $9 + i32.load offset=20 i32.const 50 - i32.lt_u + i32.ne if - block $__inlined_func$~lib/map/Map#find24 (result i32) - local.get $11 + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|8 + local.get $1 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u + if + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 65535 i32.and i32.const -1028477379 @@ -11520,60 +11625,60 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|025 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find23 local.get $2 - i32.load16_u - local.get $1 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|024 end - br_if $__inlined_func$~lib/map/Map#find24 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|025 end + i32.const 0 + local.set $3 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - block $__inlined_func$~lib/map/Map#find27 (result i32) - local.get $11 + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 65535 i32.and i32.const -1028477379 @@ -11608,56 +11713,58 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|028 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find26 local.get $2 - i32.load16_u - local.get $1 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|027 end - br_if $__inlined_func$~lib/map/Map#find27 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|028 end - end - i32.const 0 - end - i32.eqz - if + i32.const 0 + local.set $3 + end + local.get $3 i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $11 - local.get $0 - call $~lib/map/Map#delete - block $__inlined_func$~lib/map/Map#find30 (result i32) - local.get $11 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $9 + local.get $1 + call $~lib/map/Map#delete + local.get $9 i32.load - local.get $11 + local.get $9 i32.load offset=4 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 65535 i32.and i32.const -1028477379 @@ -11692,81 +11799,83 @@ i32.shl i32.add i32.load - local.set $2 - loop $while-continue|031 - local.get $2 - if - local.get $2 - local.get $2 - i32.load offset=8 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + local.set $3 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $3 + if + local.get $3 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $0 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find29 local.get $2 - i32.load16_u - local.get $1 - i32.const 65535 + i32.const -2 i32.and - i32.eq + local.set $3 + br $while-continue|030 end - br_if $__inlined_func$~lib/map/Map#find30 - drop - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|031 end + i32.const 0 + local.set $3 end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|8 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|8 end + local.get $9 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/map/Map#clear + local.get $9 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $11 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $~lib/map/Map#clear - local.get $11 - i32.load offset=20 - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 18432 i32.const 18480 @@ -11777,65 +11886,65 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if local.get $0 - local.get $0 + local.tee $1 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $2 local.get $1 - local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -11843,8 +11952,9 @@ end end i32.const 0 + local.set $1 end - local.tee $0 + local.get $1 i32.eqz if i32.const 1616 @@ -11854,56 +11964,55 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -11918,7 +12027,6 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -11927,8 +12035,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -12002,29 +12111,29 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i64.const 0 i64.store - local.get $2 + local.get $4 i64.const 0 i64.store offset=8 - local.get $2 + local.get $4 i32.const 0 i32.store offset=16 - local.get $2 + local.get $4 call $~lib/map/Map#constructor - local.tee $4 + local.tee $5 i32.store loop $for-loop|0 - local.get $3 + local.get $2 i32.const 100 i32.lt_s if - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $3 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12033,22 +12142,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -12057,36 +12166,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $6 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $2 + local.get $6 if - local.get $2 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $6 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $6 br $while-continue|0 end end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 + local.get $6 if i32.const 0 i32.const 1568 @@ -12095,17 +12204,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + local.get $5 + local.get $2 + local.get $2 i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $3 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12114,22 +12223,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -12138,36 +12247,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $6 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $2 + local.get $6 if - local.get $2 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $6 br $while-continue|02 end end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 + local.get $6 i32.eqz if i32.const 0 @@ -12177,10 +12286,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $5 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.const 10 i32.add i32.ne @@ -12192,14 +12301,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -12212,17 +12321,17 @@ unreachable end i32.const 0 - local.set $3 + local.set $2 loop $for-loop|1 - local.get $3 + local.get $2 i32.const 100 i32.lt_s if - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $3 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12231,22 +12340,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -12255,36 +12364,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $6 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $2 + local.get $6 if - local.get $2 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $6 br $while-continue|05 end end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 + local.get $6 i32.eqz if i32.const 0 @@ -12294,10 +12403,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $5 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.const 10 i32.add i32.ne @@ -12309,17 +12418,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + local.get $5 + local.get $2 + local.get $2 i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $3 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12328,22 +12437,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -12352,36 +12461,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $6 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $2 + local.get $6 if - local.get $2 + local.get $6 i32.load offset=8 - local.tee $6 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $2 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $6 br $while-continue|08 end end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 + local.get $6 i32.eqz if i32.const 0 @@ -12391,10 +12500,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $5 + local.get $2 call $~lib/map/Map#get - local.get $3 + local.get $2 i32.const 20 i32.add i32.ne @@ -12406,14 +12515,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|1 end end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -12426,8 +12535,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -12439,95 +12547,97 @@ local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $5 i32.load offset=8 local.set $7 local.get $2 - local.get $4 + local.get $5 i32.load offset=16 - local.tee $2 + local.tee $8 call $~lib/array/Array#constructor - local.tee $3 + local.tee $4 i32.store - loop $for-loop|01 - local.get $2 - local.get $5 - i32.gt_s + loop $for-loop|02 + local.get $3 + local.get $8 + i32.lt_s if - local.get $5 + local.get $3 i32.const 12 i32.mul local.get $7 i32.add - local.tee $8 + local.tee $9 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 - local.get $0 - local.get $8 - i32.load - call $~lib/array/Array#__set - local.get $0 + local.get $1 + local.tee $2 i32.const 1 i32.add - local.set $0 + local.set $1 + local.get $4 + local.get $2 + local.get $9 + i32.load + call $~lib/array/Array#__set end - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 - br $for-loop|01 + local.set $3 + br $for-loop|02 end end - local.get $3 - local.get $0 + local.get $4 + local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + local.get $4 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $6 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 call $~lib/map/Map#values - local.tee $5 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $6 + local.tee $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $7 + local.tee $3 i32.store offset=16 loop $for-loop|2 - local.get $3 + local.get $4 i32.load offset=12 - local.get $1 + local.get $0 i32.gt_s if - local.get $3 + local.get $4 + local.get $0 + call $~lib/array/Array#__get + local.set $7 local.get $1 + local.get $0 call $~lib/array/Array#__get local.set $8 local.get $5 - local.get $1 - call $~lib/array/Array#__get - local.set $9 - local.get $4 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $8 + local.get $7 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12536,22 +12646,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 i32.const 16 i32.shr_u i32.xor @@ -12560,36 +12670,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $6 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $2 + local.get $6 if - local.get $2 + local.get $6 i32.load offset=8 - local.tee $0 + local.tee $9 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $8 - local.get $2 + local.get $7 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $0 + local.get $9 i32.const -2 i32.and - local.set $2 + local.set $6 br $while-continue|011 end end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 + local.get $6 i32.eqz if i32.const 0 @@ -12599,14 +12709,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $9 + local.get $8 i32.const 20 i32.sub - local.tee $10 + local.tee $9 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12615,22 +12725,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 i32.const 16 i32.shr_u i32.xor @@ -12639,36 +12749,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $6 block $__inlined_func$~lib/map/Map#find13 loop $while-continue|014 - local.get $2 + local.get $6 if - local.get $2 + local.get $6 i32.load offset=8 - local.tee $0 + local.tee $10 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $10 - local.get $2 + local.get $9 + local.get $6 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $0 + local.get $10 i32.const -2 i32.and - local.set $2 + local.set $6 br $while-continue|014 end end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 + local.get $6 i32.eqz if i32.const 0 @@ -12678,25 +12788,25 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $8 - local.get $8 - call $~lib/map/Map#set + local.get $2 local.get $7 - local.get $9 + local.get $7 + call $~lib/map/Map#set + local.get $3 + local.get $8 i32.const 20 i32.sub - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 call $~lib/map/Map#set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|2 end end - local.get $6 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -12708,7 +12818,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -12721,17 +12831,18 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|3 - local.get $1 + local.get $0 i32.const 50 i32.lt_s if - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12764,36 +12875,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find16 loop $while-continue|017 - local.get $2 + local.get $0 if - local.get $2 + 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 local.get $1 - local.get $2 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find16 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|017 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -12803,7 +12914,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $1 call $~lib/map/Map#get local.get $1 @@ -12818,12 +12929,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $1 call $~lib/map/Map#delete - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 local.get $1 i32.const -1028477379 @@ -12858,36 +12969,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find19 loop $while-continue|020 - local.get $2 + local.get $0 if - local.get $2 + 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 local.get $1 - local.get $2 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find19 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|020 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 if i32.const 0 i32.const 1568 @@ -12899,11 +13010,11 @@ local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|3 end end - local.get $4 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -12916,17 +13027,18 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|4 - local.get $1 + local.get $0 i32.const 50 i32.lt_s if - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12959,36 +13071,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find22 loop $while-continue|023 - local.get $2 + local.get $0 if - local.get $2 + 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 local.get $1 - local.get $2 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find22 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|023 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 if i32.const 0 i32.const 1568 @@ -12997,15 +13109,15 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $1 local.get $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 local.get $1 i32.const -1028477379 @@ -13040,36 +13152,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find25 loop $while-continue|026 - local.get $2 + local.get $0 if - local.get $2 + 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 local.get $1 - local.get $2 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find25 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|026 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.eqz if i32.const 0 @@ -13079,12 +13191,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $1 call $~lib/map/Map#delete - local.get $4 + local.get $5 i32.load - local.get $4 + local.get $5 i32.load offset=4 local.get $1 i32.const -1028477379 @@ -13119,36 +13231,36 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 block $__inlined_func$~lib/map/Map#find28 loop $while-continue|029 - local.get $2 + local.get $0 if - local.get $2 + 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 local.get $1 - local.get $2 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find28 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|029 end end i32.const 0 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 if i32.const 0 i32.const 1568 @@ -13160,11 +13272,11 @@ local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -13176,9 +13288,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 call $~lib/map/Map#clear - local.get $4 + local.get $5 i32.load offset=20 if i32.const 0 @@ -13236,7 +13348,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -13252,7 +13364,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -13262,23 +13374,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i32.load local.tee $8 i32.store local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -13292,29 +13404,29 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $8 i32.load @@ -13327,20 +13439,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 12 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -13369,65 +13481,65 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if local.get $0 - local.get $0 + local.tee $1 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $2 local.get $1 - local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -13435,8 +13547,9 @@ end end i32.const 0 + local.set $1 end - local.tee $0 + local.get $1 i32.eqz if i32.const 1616 @@ -13446,56 +13559,55 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -13510,7 +13622,6 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -13519,8 +13630,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -13590,95 +13702,94 @@ (local $14 i32) (local $15 i32) (local $16 i32) - (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i64.const 0 i64.store - local.get $5 + local.get $3 i64.const 0 i64.store offset=8 - local.get $5 + local.get $3 i32.const 0 i32.store offset=16 - local.get $5 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 i32.const 0 i32.store - local.get $3 + local.get $4 i32.const 24 i32.const 17 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $11 i32.store - local.get $3 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store - local.get $6 + local.get $4 if - local.get $3 - local.get $6 + local.get $11 + local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $11 i32.const 3 i32.store offset=4 - local.get $3 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store offset=8 - local.get $6 + local.get $4 if - local.get $3 - local.get $6 + local.get $11 + local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $11 i32.const 4 i32.store offset=12 - local.get $3 + local.get $11 i32.const 0 i32.store offset=16 - local.get $3 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 local.get $3 + local.get $11 i32.store loop $for-loop|0 - local.get $4 + local.get $2 i32.const 100 i32.lt_u if - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $4 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13687,22 +13798,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -13711,36 +13822,36 @@ i32.shl i32.add i32.load - local.set $5 + local.set $4 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $5 + local.get $4 if - local.get $5 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $2 local.get $4 - local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $5 + local.set $4 br $while-continue|0 end end i32.const 0 - local.set $5 + local.set $4 end - local.get $5 + local.get $4 if i32.const 0 i32.const 1568 @@ -13749,17 +13860,17 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 - local.get $4 + local.get $11 + local.get $2 + local.get $2 i32.const 10 i32.add call $~lib/map/Map#set - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $4 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13768,22 +13879,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -13792,36 +13903,36 @@ i32.shl i32.add i32.load - local.set $5 + local.set $4 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $5 + local.get $4 if - local.get $5 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $2 local.get $4 - local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $5 + local.set $4 br $while-continue|02 end end i32.const 0 - local.set $5 + local.set $4 end - local.get $5 + local.get $4 i32.eqz if i32.const 0 @@ -13831,10 +13942,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $11 + local.get $2 call $~lib/map/Map#get - local.get $4 + local.get $2 i32.const 10 i32.add i32.ne @@ -13846,14 +13957,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -13866,17 +13977,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $2 loop $for-loop|1 - local.get $4 + local.get $2 i32.const 100 i32.lt_u if - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $4 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13885,22 +13996,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -13909,36 +14020,36 @@ i32.shl i32.add i32.load - local.set $5 + local.set $4 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $5 + local.get $4 if - local.get $5 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $2 local.get $4 - local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $5 + local.set $4 br $while-continue|05 end end i32.const 0 - local.set $5 + local.set $4 end - local.get $5 + local.get $4 i32.eqz if i32.const 0 @@ -13948,10 +14059,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $11 + local.get $2 call $~lib/map/Map#get - local.get $4 + local.get $2 i32.const 10 i32.add i32.ne @@ -13963,17 +14074,17 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 - local.get $4 + local.get $11 + local.get $2 + local.get $2 i32.const 20 i32.add call $~lib/map/Map#set - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $4 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13982,22 +14093,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u i32.xor @@ -14006,36 +14117,36 @@ i32.shl i32.add i32.load - local.set $5 + local.set $4 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $5 + local.get $4 if - local.get $5 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $2 local.get $4 - local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $5 + local.set $4 br $while-continue|08 end end i32.const 0 - local.set $5 + local.set $4 end - local.get $5 + local.get $4 i32.eqz if i32.const 0 @@ -14045,10 +14156,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $11 + local.get $2 call $~lib/map/Map#get - local.get $4 + local.get $2 i32.const 20 i32.add i32.ne @@ -14060,14 +14171,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|1 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -14081,57 +14192,54 @@ end global.get $~lib/memory/__stack_pointer local.tee $4 - local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $3 i32.const 0 i32.store - local.get $3 - local.tee $4 + local.get $11 i32.load offset=8 + local.set $6 + local.get $11 + i32.load offset=16 local.set $7 local.get $3 - i32.load offset=16 - local.tee $8 - local.set $9 - local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i64.const 0 i64.store - local.get $3 + local.get $2 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=12 - local.get $9 + local.get $7 i32.const 268435455 i32.gt_u if @@ -14143,98 +14251,100 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $7 i32.const 8 - local.get $9 + local.get $7 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $10 + local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $9 i32.store offset=4 - local.get $11 - local.get $10 + local.get $9 + local.get $8 call $~lib/memory/memory.fill - local.get $3 - local.get $11 + local.get $2 + local.get $9 i32.store - local.get $11 + local.get $9 if - local.get $3 - local.get $11 + local.get $2 + local.get $9 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 - local.get $11 + local.get $2 + local.get $9 i32.store offset=4 - local.get $3 - local.get $10 + local.get $2 + local.get $8 i32.store offset=8 - local.get $3 - local.get $9 + local.get $2 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 local.get $3 + local.get $2 i32.store - loop $for-loop|01 - local.get $2 - local.get $8 + loop $for-loop|02 + local.get $5 + local.get $7 i32.lt_s if - local.get $2 + local.get $5 i32.const 12 i32.mul - local.get $7 + local.get $6 i32.add - local.tee $6 + local.tee $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 - local.get $1 - local.get $6 - i32.load - call $~lib/array/Array#__set local.get $1 + local.tee $3 i32.const 1 i32.add local.set $1 + local.get $2 + local.get $3 + local.get $8 + i32.load + call $~lib/array/Array#__set end - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.set $5 + br $for-loop|02 end end - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $2 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $11 call $~lib/map/Map#values - local.tee $13 + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14244,70 +14354,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 24 i32.const 19 call $~lib/rt/itcms/__new - local.tee $14 + local.tee $12 i32.store - local.get $14 + local.get $12 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 if - local.get $14 - local.get $2 + local.get $12 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $14 + local.get $12 i32.const 3 i32.store offset=4 - local.get $14 + local.get $12 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $3 i32.store offset=8 - local.get $2 + local.get $3 if - local.get $14 - local.get $2 + local.get $12 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $14 + local.get $12 i32.const 4 i32.store offset=12 - local.get $14 + local.get $12 i32.const 0 i32.store offset=16 - local.get $14 + local.get $12 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $15 + local.tee $9 i32.store offset=16 loop $for-loop|2 - local.get $3 + local.get $2 i32.load offset=12 local.get $0 i32.gt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.load offset=12 i32.ge_u if @@ -14318,24 +14428,23 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $5 - local.get $13 + local.set $3 + local.get $7 local.get $1 call $~lib/array/Array#__get - local.set $16 - local.get $4 + local.set $8 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 - local.get $5 - local.tee $6 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14368,36 +14477,36 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find12 - loop $while-continue|013 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $0 + local.get $3 + local.get $4 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find12 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find10 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|013 + local.set $4 + br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 i32.eqz if i32.const 0 @@ -14407,14 +14516,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 - local.get $16 + local.get $8 i32.const 20 i32.sub - local.tee $2 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14423,22 +14532,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $4 + local.get $4 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $4 + local.get $4 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $4 + local.get $4 i32.const 16 i32.shr_u i32.xor @@ -14447,36 +14556,36 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 local.get $0 + local.get $4 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find15 - local.get $7 + br_if $__inlined_func$~lib/map/Map#find13 + local.get $5 i32.const -2 i32.and - local.set $0 - br $while-continue|016 + local.set $4 + br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 i32.eqz if i32.const 0 @@ -14493,13 +14602,14 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $14 + local.get $12 i32.load - local.get $5 + local.get $3 + local.tee $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14509,57 +14619,56 @@ i32.const 668265263 i32.mul local.tee $0 - local.get $0 i32.const 15 i32.shr_u + local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 - local.get $0 i32.const 13 i32.shr_u + local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 - local.get $0 i32.const 16 i32.shr_u + local.get $0 i32.xor - local.tee $8 - local.get $14 + local.tee $6 + local.get $12 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 - local.get $2 + local.set $0 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 + local.get $0 if - local.get $2 - local.tee $0 + local.get $0 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $4 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $5 i32.const -2 i32.and - local.set $2 - br $while-continue|018 + local.set $0 + br $while-continue|016 end end i32.const 0 @@ -14568,18 +14677,18 @@ local.get $0 if local.get $0 - local.get $6 + local.get $3 i32.store offset=4 else - local.get $14 + local.get $12 i32.load offset=16 - local.get $14 + local.get $12 i32.load offset=12 i32.eq if - local.get $14 + local.get $12 i32.load offset=20 - local.get $14 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -14587,17 +14696,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $14 + local.get $12 i32.load offset=4 else - local.get $14 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $10 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14605,20 +14714,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $10 + local.get $13 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 + local.tee $14 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -14626,45 +14735,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $9 + local.tee $5 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $14 + local.get $12 i32.load offset=8 - local.tee $7 - local.get $14 + local.tee $10 + local.get $12 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $12 - local.get $2 + local.set $15 + local.get $4 local.set $0 - loop $while-continue|019 - local.get $7 - local.get $12 + loop $while-continue|00 + local.get $10 + local.get $15 i32.ne if - local.get $7 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $10 i32.load - local.tee $17 + local.tee $16 i32.store local.get $0 - local.get $7 + local.get $10 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $17 + local.get $16 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14673,35 +14782,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $17 - local.get $17 + local.tee $16 i32.const 15 i32.shr_u + local.get $16 i32.xor i32.const -2048144777 i32.mul - local.tee $17 - local.get $17 + local.tee $16 i32.const 13 i32.shr_u + local.get $16 i32.xor i32.const -1028477379 i32.mul - local.tee $17 - local.get $17 + local.tee $16 i32.const 16 i32.shr_u + local.get $16 i32.xor - local.get $10 + local.get $13 i32.and i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add - local.tee $17 + local.tee $16 i32.load i32.store offset=8 - local.get $17 + local.get $16 local.get $0 i32.store local.get $0 @@ -14709,39 +14818,39 @@ i32.add local.set $0 end - local.get $7 + local.get $10 i32.const 12 i32.add - local.set $7 - br $while-continue|019 + local.set $10 + br $while-continue|00 end end + local.get $12 local.get $14 - local.get $11 i32.store - local.get $11 + local.get $14 if + local.get $12 local.get $14 - local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $14 - local.get $10 + local.get $12 + local.get $13 i32.store offset=4 - local.get $14 - local.get $2 + local.get $12 + local.get $4 i32.store offset=8 - local.get $2 + local.get $4 if - local.get $14 - local.get $2 + local.get $12 + local.get $4 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $14 - local.get $9 + local.get $12 + local.get $5 i32.store offset=12 - local.get $14 - local.get $14 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -14750,48 +14859,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $14 - local.get $14 + local.get $12 + local.get $12 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $5 + local.get $3 i32.store local.get $0 - local.get $6 + local.get $3 i32.store offset=4 - local.get $14 - local.get $14 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $14 + local.get $12 i32.load - local.get $14 + local.get $12 i32.load offset=4 - local.get $8 + local.get $6 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store end @@ -14799,8 +14908,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $16 + local.get $9 + local.get $8 i32.const 20 i32.sub local.tee $0 @@ -14813,7 +14922,7 @@ br $for-loop|2 end end - local.get $14 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -14825,7 +14934,7 @@ call $~lib/builtins/abort unreachable end - local.get $15 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -14844,9 +14953,9 @@ i32.const 50 i32.lt_u if - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 local.get $0 i32.const -1028477379 @@ -14881,12 +14990,12 @@ i32.shl i32.add i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $5 + local.set $2 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $2 if - local.get $5 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -14895,22 +15004,22 @@ i32.const 0 else local.get $0 - local.get $5 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find21 + br_if $__inlined_func$~lib/map/Map#find18 local.get $1 i32.const -2 i32.and - local.set $5 - br $while-continue|022 + local.set $2 + br $while-continue|019 end end i32.const 0 - local.set $5 + local.set $2 end - local.get $5 + local.get $2 i32.eqz if i32.const 0 @@ -14920,7 +15029,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 local.get $0 call $~lib/map/Map#get local.get $0 @@ -14935,12 +15044,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 local.get $0 call $~lib/map/Map#delete - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 local.get $0 i32.const -1028477379 @@ -14975,12 +15084,12 @@ i32.shl i32.add i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 - local.get $5 + local.set $2 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $2 if - local.get $5 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -14989,22 +15098,22 @@ i32.const 0 else local.get $0 - local.get $5 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find24 + br_if $__inlined_func$~lib/map/Map#find21 local.get $1 i32.const -2 i32.and - local.set $5 - br $while-continue|025 + local.set $2 + br $while-continue|022 end end i32.const 0 - local.set $5 + local.set $2 end - local.get $5 + local.get $2 if i32.const 0 i32.const 1568 @@ -15020,7 +15129,7 @@ br $for-loop|3 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -15039,9 +15148,9 @@ i32.const 50 i32.lt_u if - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 local.get $0 i32.const -1028477379 @@ -15076,12 +15185,12 @@ i32.shl i32.add i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 - local.get $5 + local.set $2 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $2 if - local.get $5 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -15090,22 +15199,22 @@ i32.const 0 else local.get $0 - local.get $5 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find27 + br_if $__inlined_func$~lib/map/Map#find24 local.get $1 i32.const -2 i32.and - local.set $5 - br $while-continue|028 + local.set $2 + br $while-continue|025 end end i32.const 0 - local.set $5 + local.set $2 end - local.get $5 + local.get $2 if i32.const 0 i32.const 1568 @@ -15114,15 +15223,15 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 local.get $0 local.get $0 i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 local.get $0 i32.const -1028477379 @@ -15157,12 +15266,12 @@ i32.shl i32.add i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 - local.get $5 + local.set $2 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $2 if - local.get $5 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -15171,22 +15280,22 @@ i32.const 0 else local.get $0 - local.get $5 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find30 + br_if $__inlined_func$~lib/map/Map#find27 local.get $1 i32.const -2 i32.and - local.set $5 - br $while-continue|031 + local.set $2 + br $while-continue|028 end end i32.const 0 - local.set $5 + local.set $2 end - local.get $5 + local.get $2 i32.eqz if i32.const 0 @@ -15196,12 +15305,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 local.get $0 call $~lib/map/Map#delete - local.get $4 + local.get $11 i32.load - local.get $4 + local.get $11 i32.load offset=4 local.get $0 i32.const -1028477379 @@ -15236,12 +15345,12 @@ i32.shl i32.add i32.load - local.set $5 - block $__inlined_func$~lib/map/Map#find33 - loop $while-continue|034 - local.get $5 + local.set $2 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $2 if - local.get $5 + local.get $2 i32.load offset=8 local.tee $1 i32.const 1 @@ -15250,22 +15359,22 @@ i32.const 0 else local.get $0 - local.get $5 + local.get $2 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find33 + br_if $__inlined_func$~lib/map/Map#find30 local.get $1 i32.const -2 i32.and - local.set $5 - br $while-continue|034 + local.set $2 + br $while-continue|031 end end i32.const 0 - local.set $5 + local.set $2 end - local.get $5 + local.get $2 if i32.const 0 i32.const 1568 @@ -15281,7 +15390,7 @@ br $for-loop|4 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -15293,9 +15402,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 call $~lib/map/Map#clear - local.get $4 + local.get $11 i32.load offset=20 if i32.const 0 @@ -15320,61 +15429,60 @@ ) (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -15389,7 +15497,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $2 i32.const -2 i32.and @@ -15398,7 +15505,9 @@ end end i32.const 0 + local.set $0 end + local.get $0 i32.const 0 i32.ne ) @@ -15438,7 +15547,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -15454,7 +15563,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 @@ -15464,23 +15573,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $8 i32.ne if - local.get $5 + local.get $4 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i64.load local.tee $6 i64.store local.get $2 - local.get $5 + local.get $4 i32.load offset=8 i32.store offset=8 local.get $2 @@ -15528,7 +15637,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $9 i32.load @@ -15541,20 +15650,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 16 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -15583,61 +15692,60 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -15652,7 +15760,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $2 i32.const -2 i32.and @@ -15661,8 +15768,9 @@ end end i32.const 0 + local.set $0 end - local.tee $0 + local.get $0 i32.eqz if i32.const 1616 @@ -15717,61 +15825,60 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=12 local.tee $3 @@ -15786,7 +15893,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -15795,8 +15901,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -15889,8 +15996,8 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i32) + (local $3 i32) + (local $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) @@ -15908,87 +16015,87 @@ i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=16 - local.get $1 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 0 i32.store - local.get $4 + local.get $5 i32.const 24 i32.const 20 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $5 i32.store - local.get $9 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 if - local.get $9 - local.get $4 + local.get $5 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $5 i32.const 3 i32.store offset=4 - local.get $9 + local.get $5 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store offset=8 - local.get $4 + local.get $6 if - local.get $9 - local.get $4 + local.get $5 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $5 i32.const 4 i32.store offset=12 - local.get $9 + local.get $5 i32.const 0 i32.store offset=16 - local.get $9 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $9 + local.get $2 + local.get $5 i32.store loop $for-loop|0 - local.get $3 + local.get $4 i64.const 100 i64.lt_s if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -15998,15 +16105,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16017,10 +16124,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -16033,14 +16140,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -16053,14 +16160,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $4 loop $for-loop|1 - local.get $3 + local.get $4 i64.const 100 i64.lt_s if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16071,10 +16178,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -16087,15 +16194,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16106,10 +16213,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -16122,14 +16229,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|1 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -16142,57 +16249,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $2 i32.const 0 i32.store - local.get $9 + local.get $5 i32.load offset=8 local.set $7 - local.get $9 + local.get $5 i32.load offset=16 - local.tee $8 - local.set $10 - local.get $6 + local.set $8 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $9 i64.const 0 i64.store - local.get $1 + local.get $9 i32.const 16 i32.const 21 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $10 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store offset=4 - local.get $1 + local.get $10 i32.const 0 i32.store offset=8 - local.get $1 + local.get $10 i32.const 0 i32.store offset=12 - local.get $10 + local.get $8 i32.const 134217727 i32.gt_u if @@ -16204,98 +16309,100 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $8 i32.const 8 - local.get $10 + local.get $8 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $11 + local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $11 i32.store offset=4 - local.get $12 local.get $11 + local.get $9 call $~lib/memory/memory.fill - local.get $1 - local.get $12 + local.get $10 + local.get $11 i32.store - local.get $12 + local.get $11 if - local.get $1 - local.get $12 + local.get $10 + local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 - local.get $12 - i32.store offset=4 - local.get $1 + local.get $10 local.get $11 + i32.store offset=4 + local.get $10 + local.get $9 i32.store offset=8 - local.get $1 local.get $10 + local.get $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $1 + local.get $2 + local.get $10 i32.store - loop $for-loop|01 - local.get $2 + loop $for-loop|02 + local.get $3 local.get $8 i32.lt_s if - local.get $2 + local.get $3 i32.const 4 i32.shl local.get $7 i32.add - local.tee $6 + local.tee $9 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $1 - local.get $0 - local.get $6 - i64.load - call $~lib/array/Array#__set - local.get $0 + local.tee $2 i32.const 1 i32.add - local.set $0 + local.set $1 + local.get $10 + local.get $2 + local.get $9 + i64.load + call $~lib/array/Array#__set end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.set $3 + br $for-loop|02 end end + local.get $10 local.get $1 - local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity + local.get $10 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 + local.get $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $5 call $~lib/map/Map#values - local.tee $10 + local.tee $11 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16305,7 +16412,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 @@ -16314,62 +16421,63 @@ i32.const 24 i32.const 22 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $12 i32.store - local.get $11 + local.get $12 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $11 + local.get $12 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $12 i32.const 3 i32.store offset=4 - local.get $11 + local.get $12 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=8 local.get $2 if - local.get $11 + local.get $12 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $12 i32.const 4 i32.store offset=12 - local.get $11 + local.get $12 i32.const 0 i32.store offset=16 - local.get $11 + local.get $12 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $12 + local.tee $6 i32.store offset=16 loop $for-loop|2 - local.get $1 + local.get $10 i32.load offset=12 - local.get $5 + local.get $0 i32.gt_s if - local.get $1 + local.get $0 + local.tee $2 + local.get $10 i32.load offset=12 - local.get $5 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -16378,20 +16486,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $10 i32.load offset=4 - local.get $5 + local.get $2 i32.const 3 i32.shl i32.add i64.load - local.set $3 - local.get $10 - local.get $5 + local.set $4 + local.get $11 + local.get $2 call $~lib/array/Array#__get - local.set $13 - local.get $9 - local.get $3 + local.set $7 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16402,8 +16510,8 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $13 + local.get $5 + local.get $7 i32.const 20 i32.sub i64.extend_i32_s @@ -16424,13 +16532,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $11 + local.get $12 i32.load - local.get $3 + local.get $4 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16440,7 +16548,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $3 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16470,8 +16578,8 @@ i32.const 16 i32.shr_u i32.xor - local.tee $14 - local.get $11 + local.tee $13 + local.get $12 i32.load offset=4 i32.and i32.const 2 @@ -16485,19 +16593,19 @@ if local.get $0 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 @@ -16510,18 +16618,18 @@ local.get $0 if local.get $0 - local.get $3 + local.get $4 i64.store offset=8 else - local.get $11 + local.get $12 i32.load offset=16 - local.get $11 + local.get $12 i32.load offset=12 i32.eq if - local.get $11 + local.get $12 i32.load offset=20 - local.get $11 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -16529,17 +16637,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $11 + local.get $12 i32.load offset=4 else - local.get $11 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $15 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -16547,20 +16655,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $15 + local.get $8 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -16568,41 +16676,41 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $14 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $11 + local.get $12 i32.load offset=8 - local.tee $4 - local.get $11 + local.tee $1 + local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $8 - local.get $2 + local.set $15 + local.get $3 local.set $0 - loop $while-continue|02 - local.get $4 - local.get $8 + loop $while-continue|00 + local.get $1 + local.get $15 i32.ne if - local.get $4 + local.get $1 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 + local.get $1 i64.load local.tee $16 i64.store local.get $0 - local.get $4 + local.get $1 i64.load offset=8 i64.store offset=8 local.get $0 @@ -16646,11 +16754,11 @@ i32.const 16 i32.shr_u i32.xor - local.get $15 + local.get $8 i32.and i32.const 2 i32.shl - local.get $6 + local.get $9 i32.add local.tee $17 i32.load @@ -16663,39 +16771,39 @@ i32.add local.set $0 end - local.get $4 + local.get $1 i32.const 24 i32.add - local.set $4 - br $while-continue|02 + local.set $1 + br $while-continue|00 end end - local.get $11 - local.get $6 + local.get $12 + local.get $9 i32.store - local.get $6 + local.get $9 if - local.get $11 - local.get $6 + local.get $12 + local.get $9 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 - local.get $15 + local.get $12 + local.get $8 i32.store offset=4 - local.get $11 - local.get $2 + local.get $12 + local.get $3 i32.store offset=8 - local.get $2 + local.get $3 if - local.get $11 - local.get $2 + local.get $12 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 - local.get $7 + local.get $12 + local.get $14 i32.store offset=12 - local.get $11 - local.get $11 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -16704,48 +16812,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $11 - local.get $11 + local.get $12 + local.get $12 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $1 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $3 + local.get $4 i64.store local.get $0 - local.get $3 + local.get $4 i64.store offset=8 - local.get $11 - local.get $11 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $11 + local.get $12 i32.load - local.get $11 + local.get $12 i32.load offset=4 - local.get $14 + local.get $13 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=16 - local.get $2 + local.get $1 local.get $0 i32.store end @@ -16753,21 +16861,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 - local.get $13 + local.get $6 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|2 end end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -16779,7 +16887,7 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -16792,14 +16900,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $4 loop $for-loop|3 - local.get $3 + local.get $4 i64.const 50 i64.lt_s if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16810,10 +16918,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -16826,11 +16934,11 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -16840,14 +16948,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|3 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -16860,14 +16968,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $4 loop $for-loop|4 - local.get $3 + local.get $4 i64.const 50 i64.lt_s if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -16877,15 +16985,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -16896,11 +17004,11 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -16910,14 +17018,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -16929,9 +17037,9 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $5 call $~lib/map/Map#clear - local.get $9 + local.get $5 i32.load offset=20 if i32.const 0 @@ -16956,61 +17064,60 @@ ) (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -17025,7 +17132,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $2 i32.const -2 i32.and @@ -17034,7 +17140,9 @@ end end i32.const 0 + local.set $0 end + local.get $0 i32.const 0 i32.ne ) @@ -17074,7 +17182,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -17090,7 +17198,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 @@ -17100,23 +17208,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $8 i32.ne if - local.get $5 + local.get $4 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 i64.load local.tee $6 i64.store local.get $2 - local.get $5 + local.get $4 i32.load offset=8 i32.store offset=8 local.get $2 @@ -17164,7 +17272,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $9 i32.load @@ -17177,20 +17285,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 16 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -17219,61 +17327,60 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -17288,7 +17395,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $2 i32.const -2 i32.and @@ -17297,8 +17403,9 @@ end end i32.const 0 + local.set $0 end - local.tee $0 + local.get $0 i32.eqz if i32.const 1616 @@ -17314,61 +17421,60 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=12 local.tee $3 @@ -17383,7 +17489,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -17392,8 +17497,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -17449,8 +17555,8 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i32) + (local $3 i32) + (local $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) @@ -17468,87 +17574,87 @@ i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=16 - local.get $1 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 0 i32.store - local.get $4 + local.get $5 i32.const 24 i32.const 23 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $5 i32.store - local.get $9 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 if - local.get $9 - local.get $4 + local.get $5 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $5 i32.const 3 i32.store offset=4 - local.get $9 + local.get $5 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $6 i32.store offset=8 - local.get $4 + local.get $6 if - local.get $9 - local.get $4 + local.get $5 + local.get $6 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $5 i32.const 4 i32.store offset=12 - local.get $9 + local.get $5 i32.const 0 i32.store offset=16 - local.get $9 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $9 + local.get $2 + local.get $5 i32.store loop $for-loop|0 - local.get $3 + local.get $4 i64.const 100 i64.lt_u if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -17558,15 +17664,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17577,10 +17683,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -17593,14 +17699,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -17613,14 +17719,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $4 loop $for-loop|1 - local.get $3 + local.get $4 i64.const 100 i64.lt_u if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17631,10 +17737,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 10 i32.add @@ -17647,15 +17753,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17666,10 +17772,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -17682,14 +17788,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|1 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -17702,57 +17808,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $2 i32.const 0 i32.store - local.get $9 + local.get $5 i32.load offset=8 local.set $7 - local.get $9 + local.get $5 i32.load offset=16 - local.tee $8 - local.set $10 - local.get $6 + local.set $8 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $9 i64.const 0 i64.store - local.get $1 + local.get $9 i32.const 16 i32.const 24 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $10 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store offset=4 - local.get $1 + local.get $10 i32.const 0 i32.store offset=8 - local.get $1 + local.get $10 i32.const 0 i32.store offset=12 - local.get $10 + local.get $8 i32.const 134217727 i32.gt_u if @@ -17764,98 +17868,100 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $8 i32.const 8 - local.get $10 + local.get $8 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $11 + local.tee $9 i32.const 0 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $11 i32.store offset=4 - local.get $12 local.get $11 + local.get $9 call $~lib/memory/memory.fill - local.get $1 - local.get $12 + local.get $10 + local.get $11 i32.store - local.get $12 + local.get $11 if - local.get $1 - local.get $12 + local.get $10 + local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 - local.get $12 - i32.store offset=4 - local.get $1 + local.get $10 local.get $11 + i32.store offset=4 + local.get $10 + local.get $9 i32.store offset=8 - local.get $1 local.get $10 + local.get $8 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $1 + local.get $2 + local.get $10 i32.store - loop $for-loop|01 - local.get $2 + loop $for-loop|02 + local.get $3 local.get $8 i32.lt_s if - local.get $2 + local.get $3 i32.const 4 i32.shl local.get $7 i32.add - local.tee $6 + local.tee $9 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $1 - local.get $0 - local.get $6 - i64.load - call $~lib/array/Array#__set - local.get $0 + local.tee $2 i32.const 1 i32.add - local.set $0 + local.set $1 + local.get $10 + local.get $2 + local.get $9 + i64.load + call $~lib/array/Array#__set end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.set $3 + br $for-loop|02 end end + local.get $10 local.get $1 - local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity + local.get $10 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 + local.get $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $5 call $~lib/map/Map#values - local.tee $10 + local.tee $11 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17865,7 +17971,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 @@ -17874,62 +17980,63 @@ i32.const 24 i32.const 25 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $12 i32.store - local.get $11 + local.get $12 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store local.get $2 if - local.get $11 + local.get $12 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $12 i32.const 3 i32.store offset=4 - local.get $11 + local.get $12 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=8 local.get $2 if - local.get $11 + local.get $12 local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $12 i32.const 4 i32.store offset=12 - local.get $11 + local.get $12 i32.const 0 i32.store offset=16 - local.get $11 + local.get $12 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $12 + local.tee $6 i32.store offset=16 loop $for-loop|2 - local.get $1 + local.get $10 i32.load offset=12 - local.get $5 + local.get $0 i32.gt_s if - local.get $1 + local.get $0 + local.tee $2 + local.get $10 i32.load offset=12 - local.get $5 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -17938,20 +18045,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $10 i32.load offset=4 - local.get $5 + local.get $2 i32.const 3 i32.shl i32.add i64.load - local.set $3 - local.get $10 - local.get $5 + local.set $4 + local.get $11 + local.get $2 call $~lib/array/Array#__get - local.set $13 - local.get $9 - local.get $3 + local.set $7 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -17962,8 +18069,8 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $13 + local.get $5 + local.get $7 i32.const 20 i32.sub i64.extend_i32_s @@ -17984,13 +18091,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $11 + local.get $12 i32.load - local.get $3 + local.get $4 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -18000,7 +18107,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $3 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 @@ -18030,8 +18137,8 @@ i32.const 16 i32.shr_u i32.xor - local.tee $14 - local.get $11 + local.tee $13 + local.get $12 i32.load offset=4 i32.and i32.const 2 @@ -18045,19 +18152,19 @@ if local.get $0 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 @@ -18070,18 +18177,18 @@ local.get $0 if local.get $0 - local.get $3 + local.get $4 i64.store offset=8 else - local.get $11 + local.get $12 i32.load offset=16 - local.get $11 + local.get $12 i32.load offset=12 i32.eq if - local.get $11 + local.get $12 i32.load offset=20 - local.get $11 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -18089,17 +18196,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $11 + local.get $12 i32.load offset=4 else - local.get $11 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $15 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -18107,20 +18214,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $15 + local.get $8 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -18128,41 +18235,41 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $14 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $11 + local.get $12 i32.load offset=8 - local.tee $4 - local.get $11 + local.tee $1 + local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $8 - local.get $2 + local.set $15 + local.get $3 local.set $0 - loop $while-continue|02 - local.get $4 - local.get $8 + loop $while-continue|00 + local.get $1 + local.get $15 i32.ne if - local.get $4 + local.get $1 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 + local.get $1 i64.load local.tee $16 i64.store local.get $0 - local.get $4 + local.get $1 i64.load offset=8 i64.store offset=8 local.get $0 @@ -18206,11 +18313,11 @@ i32.const 16 i32.shr_u i32.xor - local.get $15 + local.get $8 i32.and i32.const 2 i32.shl - local.get $6 + local.get $9 i32.add local.tee $17 i32.load @@ -18223,39 +18330,39 @@ i32.add local.set $0 end - local.get $4 + local.get $1 i32.const 24 i32.add - local.set $4 - br $while-continue|02 + local.set $1 + br $while-continue|00 end end - local.get $11 - local.get $6 + local.get $12 + local.get $9 i32.store - local.get $6 + local.get $9 if - local.get $11 - local.get $6 + local.get $12 + local.get $9 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 - local.get $15 + local.get $12 + local.get $8 i32.store offset=4 - local.get $11 - local.get $2 + local.get $12 + local.get $3 i32.store offset=8 - local.get $2 + local.get $3 if - local.get $11 - local.get $2 + local.get $12 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 - local.get $7 + local.get $12 + local.get $14 i32.store offset=12 - local.get $11 - local.get $11 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -18264,48 +18371,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $11 - local.get $11 + local.get $12 + local.get $12 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $1 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $3 + local.get $4 i64.store local.get $0 - local.get $3 + local.get $4 i64.store offset=8 - local.get $11 - local.get $11 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $11 + local.get $12 i32.load - local.get $11 + local.get $12 i32.load offset=4 - local.get $14 + local.get $13 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=16 - local.get $2 + local.get $1 local.get $0 i32.store end @@ -18313,21 +18420,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 - local.get $13 + local.get $6 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|2 end end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -18339,7 +18446,7 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -18352,14 +18459,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $4 loop $for-loop|3 - local.get $3 + local.get $4 i64.const 50 i64.lt_u if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -18370,10 +18477,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.wrap_i64 i32.const 20 i32.add @@ -18386,11 +18493,11 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -18400,14 +18507,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|3 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -18420,14 +18527,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $4 loop $for-loop|4 - local.get $3 + local.get $4 i64.const 50 i64.lt_u if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -18437,15 +18544,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -18456,11 +18563,11 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -18470,14 +18577,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i64.const 1 i64.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -18489,9 +18596,9 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $5 call $~lib/map/Map#clear - local.get $9 + local.get $5 i32.load offset=20 if i32.const 0 @@ -18550,7 +18657,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -18566,7 +18673,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 12 @@ -18576,23 +18683,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 f32.load local.tee $8 f32.store local.get $2 - local.get $5 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $2 @@ -18607,29 +18714,29 @@ i32.const 668265263 i32.mul local.tee $9 + local.get $9 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 + local.get $9 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 + local.get $9 i32.const 16 i32.shr_u - local.get $9 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $9 i32.load @@ -18642,20 +18749,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 12 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -18684,50 +18791,49 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -18742,7 +18848,6 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $2 i32.const -2 i32.and @@ -18751,8 +18856,9 @@ end end i32.const 0 + local.set $0 end - local.tee $0 + local.get $0 i32.eqz if i32.const 1616 @@ -18768,50 +18874,49 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -18826,7 +18931,6 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -18835,8 +18939,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -18894,15 +18999,15 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) + (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f32) (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 f32) (local $12 i32) - (local $13 f32) + (local $13 i32) (local $14 i32) (local $15 i32) (local $16 i32) @@ -18911,90 +19016,90 @@ i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i64.const 0 i64.store - local.get $3 + local.get $2 i64.const 0 i64.store offset=8 - local.get $3 + local.get $2 i32.const 0 i32.store offset=16 - local.get $3 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.const 26 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $13 i32.store - local.get $2 + local.get $13 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $1 i32.store - local.get $4 + local.get $1 if - local.get $2 - local.get $4 + local.get $13 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 + local.get $13 i32.const 3 i32.store offset=4 - local.get $2 + local.get $13 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $1 i32.store offset=8 - local.get $4 + local.get $1 if - local.get $2 - local.get $4 + local.get $13 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 + local.get $13 i32.const 4 i32.store offset=12 - local.get $2 + local.get $13 i32.const 0 i32.store offset=16 - local.get $2 + local.get $13 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $2 + local.get $13 i32.store loop $for-loop|0 - local.get $5 + local.get $7 f32.const 100 f32.lt if - local.get $2 + local.get $13 i32.load - local.get $2 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19004,22 +19109,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -19028,36 +19133,36 @@ i32.shl i32.add i32.load - local.set $4 + local.set $6 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $4 + local.get $6 if - local.get $4 + local.get $6 i32.load offset=8 - local.tee $3 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $4 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $1 i32.const -2 i32.and - local.set $4 + local.set $6 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $6 end - local.get $4 + local.get $6 if i32.const 0 i32.const 1568 @@ -19066,18 +19171,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $5 - local.get $5 + local.get $13 + local.get $7 + local.get $7 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $2 + local.get $13 i32.load - local.get $2 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19087,22 +19192,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -19111,36 +19216,36 @@ i32.shl i32.add i32.load - local.set $4 + local.set $6 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $4 + local.get $6 if - local.get $4 + local.get $6 i32.load offset=8 - local.tee $3 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $4 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + local.get $1 i32.const -2 i32.and - local.set $4 + local.set $6 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $6 end - local.get $4 + local.get $6 i32.eqz if i32.const 0 @@ -19150,10 +19255,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $5 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $5 + local.get $7 i32.trunc_f32_s i32.const 10 i32.add @@ -19166,14 +19271,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 f32.const 1 f32.add - local.set $5 + local.set $7 br $for-loop|0 end end - local.get $2 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -19186,17 +19291,17 @@ unreachable end f32.const 0 - local.set $5 + local.set $7 loop $for-loop|1 - local.get $5 + local.get $7 f32.const 100 f32.lt if - local.get $2 + local.get $13 i32.load - local.get $2 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19206,22 +19311,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -19230,36 +19335,36 @@ i32.shl i32.add i32.load - local.set $4 + local.set $6 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $4 + local.get $6 if - local.get $4 + local.get $6 i32.load offset=8 - local.tee $3 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $4 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + local.get $1 i32.const -2 i32.and - local.set $4 + local.set $6 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $6 end - local.get $4 + local.get $6 i32.eqz if i32.const 0 @@ -19269,10 +19374,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $5 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $5 + local.get $7 i32.trunc_f32_s i32.const 10 i32.add @@ -19285,18 +19390,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $5 - local.get $5 + local.get $13 + local.get $7 + local.get $7 i32.trunc_f32_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $2 + local.get $13 i32.load - local.get $2 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19306,22 +19411,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -19330,36 +19435,36 @@ i32.shl i32.add i32.load - local.set $4 + local.set $6 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $4 + local.get $6 if - local.get $4 + local.get $6 i32.load offset=8 - local.tee $3 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $4 + local.get $7 + local.get $6 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + local.get $1 i32.const -2 i32.and - local.set $4 + local.set $6 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $6 end - local.get $4 + local.get $6 i32.eqz if i32.const 0 @@ -19369,10 +19474,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $5 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $5 + local.get $7 i32.trunc_f32_s i32.const 20 i32.add @@ -19385,14 +19490,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 f32.const 1 f32.add - local.set $5 + local.set $7 br $for-loop|1 end end - local.get $2 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -19405,58 +19510,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $9 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $8 i32.const 0 i32.store - local.get $2 - local.tee $3 + local.get $13 i32.load offset=8 - local.set $8 - local.get $2 + local.set $6 + local.get $13 i32.load offset=16 - local.tee $9 - local.set $2 - local.get $7 + local.set $3 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $10 + local.tee $1 i64.const 0 i64.store - local.get $10 + local.get $1 i32.const 16 i32.const 27 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store - local.get $10 + local.get $4 i32.const 0 i32.store - local.get $10 + local.get $4 i32.const 0 i32.store offset=4 - local.get $10 + local.get $4 i32.const 0 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 i32.store offset=12 - local.get $2 + local.get $3 i32.const 268435455 i32.gt_u if @@ -19468,77 +19570,77 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 8 - local.get $2 + local.get $3 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $11 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $1 i32.store offset=4 - local.get $12 - local.get $11 + local.get $1 + local.get $2 call $~lib/memory/memory.fill - local.get $10 - local.get $12 + local.get $4 + local.get $1 i32.store - local.get $12 + local.get $1 if - local.get $10 - local.get $12 + local.get $4 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 - local.get $12 + local.get $4 + local.get $1 i32.store offset=4 - local.get $10 - local.get $11 - i32.store offset=8 - local.get $10 + local.get $4 local.get $2 + i32.store offset=8 + local.get $4 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $10 + local.get $8 + local.get $4 i32.store - loop $for-loop|01 - local.get $6 - local.get $9 - i32.lt_s + loop $for-loop|02 + local.get $3 + local.get $10 + i32.gt_s if - local.get $6 + local.get $10 i32.const 12 i32.mul - local.get $8 + local.get $6 i32.add - local.tee $7 + local.tee $1 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $1 - local.tee $2 + f32.load + local.set $7 + local.get $5 + local.tee $1 i32.const 1 i32.add - local.set $1 - local.get $7 - f32.load local.set $5 - local.get $10 + local.get $4 i32.load offset=12 - local.get $2 + local.get $1 i32.le_u if - local.get $2 + local.get $1 i32.const 0 i32.lt_s if @@ -19549,52 +19651,53 @@ call $~lib/builtins/abort unreachable end - local.get $10 - local.get $2 + local.get $4 + local.get $1 i32.const 1 i32.add - local.tee $7 + local.tee $2 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store offset=12 end - local.get $10 + local.get $4 i32.load offset=4 - local.get $2 + local.get $1 i32.const 2 i32.shl i32.add - local.get $5 + local.get $7 f32.store end - local.get $6 + local.get $10 i32.const 1 i32.add - local.set $6 - br $for-loop|01 + local.set $10 + br $for-loop|02 end end - local.get $10 - local.get $1 + local.get $4 + local.get $5 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $10 - local.get $1 + local.get $4 + 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 $10 + local.get $9 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $13 call $~lib/map/Map#values - local.tee $9 + local.tee $12 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19604,70 +19707,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.const 28 call $~lib/rt/itcms/__new - local.tee $11 + local.tee $3 i32.store - local.get $11 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if - local.get $11 - local.get $2 + local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $3 i32.const 3 i32.store offset=4 - local.get $11 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=8 - local.get $2 + local.get $1 if - local.get $11 - local.get $2 + local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 + local.get $3 i32.const 4 i32.store offset=12 - local.get $11 + local.get $3 i32.const 0 i32.store offset=16 - local.get $11 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $12 + local.tee $16 i32.store offset=16 loop $for-loop|2 - local.get $10 + local.get $4 i32.load offset=12 local.get $0 i32.gt_s if local.get $0 - local.tee $1 - local.get $10 + local.tee $2 + local.get $4 i32.load offset=12 i32.ge_u if @@ -19678,23 +19781,23 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.set $5 - local.get $9 - local.get $1 + local.set $11 + local.get $12 + local.get $2 call $~lib/array/Array#__get - local.set $7 - local.get $3 + local.set $10 + local.get $13 i32.load - local.get $3 + local.get $13 i32.load offset=4 - local.get $5 + local.get $11 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19728,12 +19831,12 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find12 - loop $while-continue|013 - local.get $4 + local.set $6 + block $__inlined_func$~lib/map/Map#find10 + loop $while-continue|011 + local.get $6 if - local.get $4 + local.get $6 i32.load offset=8 local.tee $0 i32.const 1 @@ -19741,23 +19844,23 @@ if (result i32) i32.const 0 else - local.get $5 - local.get $4 + local.get $11 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find12 + br_if $__inlined_func$~lib/map/Map#find10 local.get $0 i32.const -2 i32.and - local.set $4 - br $while-continue|013 + local.set $6 + br $while-continue|011 end end i32.const 0 - local.set $4 + local.set $6 end - local.get $4 + local.get $6 i32.eqz if i32.const 0 @@ -19767,15 +19870,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $13 i32.load - local.get $3 + local.get $13 i32.load offset=4 - local.get $7 + local.get $10 i32.const 20 i32.sub f32.convert_i32_s - local.tee $13 + local.tee $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19809,12 +19912,12 @@ i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $4 + local.set $6 + block $__inlined_func$~lib/map/Map#find13 + loop $while-continue|014 + local.get $6 if - local.get $4 + local.get $6 i32.load offset=8 local.tee $0 i32.const 1 @@ -19822,23 +19925,23 @@ if (result i32) i32.const 0 else - local.get $13 - local.get $4 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find15 + br_if $__inlined_func$~lib/map/Map#find13 local.get $0 i32.const -2 i32.and - local.set $4 - br $while-continue|016 + local.set $6 + br $while-continue|014 end end i32.const 0 - local.set $4 + local.set $6 end - local.get $4 + local.get $6 i32.eqz if i32.const 0 @@ -19855,13 +19958,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $11 + local.get $3 i32.load - local.get $5 + local.get $11 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19872,76 +19975,76 @@ i32.const 668265263 i32.mul local.tee $0 - local.get $0 i32.const 15 i32.shr_u + local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 - local.get $0 i32.const 13 i32.shr_u + local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 - local.get $0 i32.const 16 i32.shr_u + local.get $0 i32.xor - local.tee $14 - local.get $11 + local.tee $9 + local.get $3 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find17 - loop $while-continue|018 - local.get $4 + local.set $0 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 + local.get $0 if - local.get $4 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $4 + local.get $11 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find17 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $1 i32.const -2 i32.and - local.set $4 - br $while-continue|018 + local.set $0 + br $while-continue|016 end end i32.const 0 - local.set $4 + local.set $0 end - local.get $4 + local.get $0 if - local.get $4 - local.get $5 + local.get $0 + local.get $11 f32.store offset=4 else - local.get $11 + local.get $3 i32.load offset=16 - local.get $11 + local.get $3 i32.load offset=12 i32.eq if - local.get $11 + local.get $3 i32.load offset=20 - local.get $11 + local.get $3 i32.load offset=12 i32.const 3 i32.mul @@ -19949,17 +20052,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $11 + local.get $3 i32.load offset=4 else - local.get $11 + local.get $3 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $4 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -19967,20 +20070,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $4 + local.get $15 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $14 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -19988,45 +20091,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $8 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $11 + local.get $3 i32.load offset=8 - local.tee $6 - local.get $11 + local.tee $5 + local.get $3 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $16 - local.get $2 + local.set $17 + local.get $1 local.set $0 - loop $while-continue|019 - local.get $6 - local.get $16 + loop $while-continue|00 + local.get $5 + local.get $17 i32.ne if - local.get $6 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $6 + local.get $5 f32.load - local.tee $13 + local.tee $7 f32.store local.get $0 - local.get $6 + local.get $5 f32.load offset=4 f32.store offset=4 local.get $0 - local.get $13 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20036,35 +20139,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $17 - local.get $17 + local.tee $6 i32.const 15 i32.shr_u + local.get $6 i32.xor i32.const -2048144777 i32.mul - local.tee $17 - local.get $17 + local.tee $6 i32.const 13 i32.shr_u + local.get $6 i32.xor i32.const -1028477379 i32.mul - local.tee $17 - local.get $17 + local.tee $6 i32.const 16 i32.shr_u + local.get $6 i32.xor - local.get $4 + local.get $15 i32.and i32.const 2 i32.shl - local.get $8 + local.get $14 i32.add - local.tee $17 + local.tee $6 i32.load i32.store offset=8 - local.get $17 + local.get $6 local.get $0 i32.store local.get $0 @@ -20072,39 +20175,39 @@ i32.add local.set $0 end - local.get $6 + local.get $5 i32.const 12 i32.add - local.set $6 - br $while-continue|019 + local.set $5 + br $while-continue|00 end end - local.get $11 - local.get $8 + local.get $3 + local.get $14 i32.store - local.get $8 + local.get $14 if - local.get $11 - local.get $8 + local.get $3 + local.get $14 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 - local.get $4 + local.get $3 + local.get $15 i32.store offset=4 - local.get $11 - local.get $2 + local.get $3 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 if - local.get $11 - local.get $2 + local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $11 - local.get $15 + local.get $3 + local.get $8 i32.store offset=12 - local.get $11 - local.get $11 + local.get $3 + local.get $3 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -20113,70 +20216,70 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $3 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store - local.get $11 - local.get $11 + local.get $3 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $0 i32.const 12 i32.mul - local.get $0 + local.get $1 i32.add - local.tee $0 - local.get $5 - f32.store - local.get $0 - local.get $5 - f32.store offset=4 + local.tee $1 local.get $11 + f32.store + local.get $1 local.get $11 + f32.store offset=4 + local.get $3 + local.get $3 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $0 - local.get $11 + local.get $1 + local.get $3 i32.load - local.get $11 + local.get $3 i32.load offset=4 - local.get $14 + local.get $9 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 - local.get $7 + local.get $16 + local.get $10 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $1 + local.get $2 i32.const 1 i32.add local.set $0 br $for-loop|2 end end - local.get $11 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -20188,7 +20291,7 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $16 i32.load offset=20 i32.const 100 i32.ne @@ -20201,17 +20304,17 @@ unreachable end f32.const 0 - local.set $5 + local.set $7 loop $for-loop|3 - local.get $5 + local.get $7 f32.const 50 f32.lt if - local.get $3 + local.get $13 i32.load - local.get $3 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20245,36 +20348,36 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $0 + local.set $6 + block $__inlined_func$~lib/map/Map#find18 + loop $while-continue|019 + local.get $6 if - local.get $0 + local.get $6 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $0 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find21 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find18 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|022 + local.set $6 + br $while-continue|019 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 i32.eqz if i32.const 0 @@ -20284,10 +20387,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $5 + local.get $13 + local.get $7 call $~lib/map/Map#get - local.get $5 + local.get $7 i32.trunc_f32_s i32.const 20 i32.add @@ -20300,14 +20403,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $5 + local.get $13 + local.get $7 call $~lib/map/Map#delete - local.get $3 + local.get $13 i32.load - local.get $3 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20341,36 +20444,36 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 - local.get $0 + local.set $6 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $6 if - local.get $0 + local.get $6 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $0 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|025 + local.set $6 + br $while-continue|022 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 if i32.const 0 i32.const 1568 @@ -20379,14 +20482,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 f32.const 1 f32.add - local.set $5 + local.set $7 br $for-loop|3 end end - local.get $3 + local.get $13 i32.load offset=20 i32.const 50 i32.ne @@ -20399,17 +20502,17 @@ unreachable end f32.const 0 - local.set $5 + local.set $7 loop $for-loop|4 - local.get $5 + local.get $7 f32.const 50 f32.lt if - local.get $3 + local.get $13 i32.load - local.get $3 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20443,36 +20546,36 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 - local.get $0 + local.set $6 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $6 if - local.get $0 + local.get $6 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $0 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find27 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|028 + local.set $6 + br $while-continue|025 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 if i32.const 0 i32.const 1568 @@ -20481,18 +20584,18 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $5 - local.get $5 + local.get $13 + local.get $7 + local.get $7 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $3 + local.get $13 i32.load - local.get $3 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20526,36 +20629,36 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 - local.get $0 + local.set $6 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $6 if - local.get $0 + local.get $6 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $0 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find30 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|031 + local.set $6 + br $while-continue|028 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 i32.eqz if i32.const 0 @@ -20565,14 +20668,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $5 + local.get $13 + local.get $7 call $~lib/map/Map#delete - local.get $3 + local.get $13 i32.load - local.get $3 + local.get $13 i32.load offset=4 - local.get $5 + local.get $7 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20606,36 +20709,36 @@ i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find33 - loop $while-continue|034 - local.get $0 + local.set $6 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $6 if - local.get $0 + local.get $6 i32.load offset=8 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $0 + local.get $7 + local.get $6 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find33 - local.get $1 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|034 + local.set $6 + br $while-continue|031 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 if i32.const 0 i32.const 1568 @@ -20644,14 +20747,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 f32.const 1 f32.add - local.set $5 + local.set $7 br $for-loop|4 end end - local.get $3 + local.get $13 i32.load offset=20 i32.const 50 i32.ne @@ -20663,9 +20766,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $13 call $~lib/map/Map#clear - local.get $3 + local.get $13 i32.load offset=20 if i32.const 0 @@ -20689,65 +20792,64 @@ unreachable ) (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + (local $2 i64) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=12 local.tee $3 @@ -20762,7 +20864,6 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -20771,7 +20872,9 @@ end end i32.const 0 + local.set $0 end + local.get $0 i32.const 0 i32.ne ) @@ -20812,7 +20915,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -20828,7 +20931,7 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 @@ -20838,23 +20941,23 @@ local.get $3 local.set $2 loop $while-continue|0 - local.get $5 + local.get $4 local.get $7 i32.ne if - local.get $5 + local.get $4 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $5 + local.get $4 f64.load local.tee $8 f64.store local.get $2 - local.get $5 + local.get $4 i32.load offset=8 i32.store offset=8 local.get $2 @@ -20904,7 +21007,7 @@ i32.and i32.const 2 i32.shl - local.get $4 + local.get $5 i32.add local.tee $10 i32.load @@ -20917,20 +21020,20 @@ i32.add local.set $2 end - local.get $5 + local.get $4 i32.const 16 i32.add - local.set $5 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 if local.get $0 - local.get $4 + local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 @@ -20960,63 +21063,62 @@ (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=12 local.tee $3 @@ -21031,7 +21133,6 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $3 i32.const -2 i32.and @@ -21040,8 +21141,9 @@ end end i32.const 0 + local.set $0 end - local.tee $0 + local.get $0 i32.eqz if i32.const 1616 @@ -21058,63 +21160,62 @@ (local $2 i32) (local $3 i64) (local $4 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=12 local.tee $4 @@ -21129,7 +21230,6 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $4 i32.const -2 i32.and @@ -21138,8 +21238,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -21195,10 +21296,10 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -21215,87 +21316,87 @@ i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.store offset=16 - local.get $1 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $5 i32.const 0 i32.store - local.get $6 + local.get $5 i32.const 24 i32.const 29 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $5 i32.store - local.get $9 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 if - local.get $9 - local.get $6 + local.get $5 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $5 i32.const 3 i32.store offset=4 - local.get $9 + local.get $5 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $7 i32.store offset=8 - local.get $6 + local.get $7 if - local.get $9 - local.get $6 + local.get $5 + local.get $7 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $5 i32.const 4 i32.store offset=12 - local.get $9 + local.get $5 i32.const 0 i32.store offset=16 - local.get $9 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $9 + local.get $2 + local.get $5 i32.store loop $for-loop|0 - local.get $3 + local.get $4 f64.const 100 f64.lt if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -21305,15 +21406,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -21324,10 +21425,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 10 i32.add @@ -21340,14 +21441,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -21360,14 +21461,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $4 loop $for-loop|1 - local.get $3 + local.get $4 f64.const 100 f64.lt if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -21378,10 +21479,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 10 i32.add @@ -21394,15 +21495,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.trunc_f64_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -21413,10 +21514,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 20 i32.add @@ -21429,14 +21530,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|1 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -21449,39 +21550,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $9 + local.get $5 i32.load offset=8 - local.set $7 - local.get $9 + local.set $8 + local.get $5 i32.load offset=16 - local.tee $8 - local.set $10 - local.get $1 + local.set $9 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $11 + local.tee $10 i64.const 0 i64.store - local.get $11 + local.get $10 i32.const 16 i32.const 30 call $~lib/rt/itcms/__new @@ -21499,7 +21598,7 @@ local.get $11 i32.const 0 i32.store offset=12 - local.get $10 + local.get $9 i32.const 134217727 i32.gt_u if @@ -21511,77 +21610,77 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.const 8 - local.get $10 + local.get $9 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $12 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $13 + local.tee $12 i32.store offset=4 - local.get $13 local.get $12 + local.get $10 call $~lib/memory/memory.fill local.get $11 - local.get $13 + local.get $12 i32.store - local.get $13 + local.get $12 if local.get $11 - local.get $13 + local.get $12 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $11 - local.get $13 + local.get $12 i32.store offset=4 local.get $11 - local.get $12 + local.get $10 i32.store offset=8 local.get $11 - local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 local.get $11 i32.store - loop $for-loop|01 - local.get $2 - local.get $8 + loop $for-loop|02 + local.get $3 + local.get $9 i32.lt_s if - local.get $2 + local.get $3 i32.const 4 i32.shl - local.get $7 + local.get $8 i32.add - local.tee $10 + local.tee $2 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $0 - local.tee $1 + local.get $2 + f64.load + local.set $4 + local.get $1 + local.tee $2 i32.const 1 i32.add - local.set $0 - local.get $10 - f64.load - local.set $3 + local.set $1 local.get $11 i32.load offset=12 - local.get $1 + local.get $2 i32.le_u if - local.get $1 + local.get $2 i32.const 0 i32.lt_s if @@ -21593,7 +21692,7 @@ unreachable end local.get $11 - local.get $1 + local.get $2 i32.const 1 i32.add local.tee $10 @@ -21606,38 +21705,39 @@ end local.get $11 i32.load offset=4 - local.get $1 + local.get $2 i32.const 3 i32.shl i32.add - local.get $3 + local.get $4 f64.store end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.set $3 + br $for-loop|02 end end local.get $11 - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity local.get $11 - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $7 local.get $11 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $5 call $~lib/map/Map#values - local.tee $10 + local.tee $12 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21647,71 +21747,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.const 31 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $13 i32.store - local.get $12 + local.get $13 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 if - local.get $12 - local.get $1 + local.get $13 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $12 + local.get $13 i32.const 3 i32.store offset=4 - local.get $12 + local.get $13 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 if - local.get $12 - local.get $1 + local.get $13 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $12 + local.get $13 i32.const 4 i32.store offset=12 - local.get $12 + local.get $13 i32.const 0 i32.store offset=16 - local.get $12 + local.get $13 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $13 + local.tee $7 i32.store offset=16 loop $for-loop|2 local.get $11 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if + local.get $0 + local.tee $1 local.get $11 i32.load offset=12 - local.get $4 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -21722,18 +21823,18 @@ end local.get $11 i32.load offset=4 - local.get $4 + local.get $1 i32.const 3 i32.shl i32.add f64.load - local.set $3 - local.get $10 - local.get $4 + local.set $4 + local.get $12 + local.get $1 call $~lib/array/Array#__get - local.set $14 - local.get $9 - local.get $3 + local.set $8 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -21744,8 +21845,8 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $14 + local.get $5 + local.get $8 i32.const 20 i32.sub f64.convert_i32_s @@ -21766,15 +21867,15 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $12 + local.get $13 i32.load - local.get $3 + local.get $4 i64.reinterpret_f64 - local.tee $5 + local.tee $6 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21784,7 +21885,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $5 + local.get $6 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21814,8 +21915,8 @@ i32.const 16 i32.shr_u i32.xor - local.tee $15 - local.get $12 + local.tee $14 + local.get $13 i32.load offset=4 i32.and i32.const 2 @@ -21829,19 +21930,19 @@ if local.get $0 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $4 local.get $0 f64.load f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $2 i32.const -2 i32.and local.set $0 @@ -21854,18 +21955,18 @@ local.get $0 if local.get $0 - local.get $3 + local.get $4 f64.store offset=8 else - local.get $12 + local.get $13 i32.load offset=16 - local.get $12 + local.get $13 i32.load offset=12 i32.eq if - local.get $12 + local.get $13 i32.load offset=20 - local.get $12 + local.get $13 i32.load offset=12 i32.const 3 i32.mul @@ -21873,17 +21974,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $12 + local.get $13 i32.load offset=4 else - local.get $12 + local.get $13 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $16 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -21891,20 +21992,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $16 + local.get $9 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $10 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -21912,47 +22013,47 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $15 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $12 + local.get $13 i32.load offset=8 - local.tee $2 - local.get $12 + local.tee $3 + local.get $13 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $8 - local.get $1 + local.set $16 + local.get $2 local.set $0 - loop $while-continue|02 - local.get $2 - local.get $8 + loop $while-continue|00 + local.get $3 + local.get $16 i32.ne if - local.get $2 + local.get $3 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $2 + local.get $3 f64.load local.tee $17 f64.store local.get $0 - local.get $2 + local.get $3 f64.load offset=8 f64.store offset=8 local.get $0 local.get $17 i64.reinterpret_f64 - local.tee $5 + local.tee $6 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21962,7 +22063,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $5 + local.get $6 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21992,11 +22093,11 @@ i32.const 16 i32.shr_u i32.xor - local.get $16 + local.get $9 i32.and i32.const 2 i32.shl - local.get $6 + local.get $10 i32.add local.tee $18 i32.load @@ -22009,39 +22110,39 @@ i32.add local.set $0 end - local.get $2 + local.get $3 i32.const 24 i32.add - local.set $2 - br $while-continue|02 + local.set $3 + br $while-continue|00 end end - local.get $12 - local.get $6 + local.get $13 + local.get $10 i32.store - local.get $6 + local.get $10 if - local.get $12 - local.get $6 + local.get $13 + local.get $10 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $12 - local.get $16 + local.get $13 + local.get $9 i32.store offset=4 - local.get $12 - local.get $1 + local.get $13 + local.get $2 i32.store offset=8 - local.get $1 + local.get $2 if - local.get $12 - local.get $1 + local.get $13 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $12 - local.get $7 + local.get $13 + local.get $15 i32.store offset=12 - local.get $12 - local.get $12 + local.get $13 + local.get $13 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -22050,48 +22151,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.load offset=8 local.tee $0 i32.store - local.get $12 - local.get $12 + local.get $13 + local.get $13 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $1 + local.get $2 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $3 + local.get $4 f64.store local.get $0 - local.get $3 + local.get $4 f64.store offset=8 - local.get $12 - local.get $12 + local.get $13 + local.get $13 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $12 + local.get $13 i32.load - local.get $12 + local.get $13 i32.load offset=4 - local.get $15 + local.get $14 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=16 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -22099,21 +22200,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 - local.get $14 + local.get $7 + local.get $8 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|2 end end - local.get $12 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -22125,7 +22226,7 @@ call $~lib/builtins/abort unreachable end - local.get $13 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -22138,14 +22239,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $4 loop $for-loop|3 - local.get $3 + local.get $4 f64.const 50 f64.lt if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -22156,10 +22257,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#get - local.get $3 + local.get $4 i32.trunc_f64_s i32.const 20 i32.add @@ -22172,11 +22273,11 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -22186,14 +22287,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|3 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -22206,14 +22307,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $4 loop $for-loop|4 - local.get $3 + local.get $4 f64.const 50 f64.lt if - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -22223,15 +22324,15 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 - local.get $3 + local.get $5 + local.get $4 + local.get $4 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has i32.eqz if @@ -22242,11 +22343,11 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#delete - local.get $9 - local.get $3 + local.get $5 + local.get $4 call $~lib/map/Map#has if i32.const 0 @@ -22256,14 +22357,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $9 + local.get $5 i32.load offset=20 i32.const 50 i32.ne @@ -22275,9 +22376,9 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $5 call $~lib/map/Map#clear - local.get $9 + local.get $5 i32.load offset=20 if i32.const 0 @@ -22498,52 +22599,52 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - 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 $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + local.tee $3 + 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 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $1 if - local.get $3 - local.get $3 + local.get $1 i32.load offset=8 local.tee $5 i32.const 1 @@ -22551,27 +22652,27 @@ if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end - local.tee $3 + local.get $1 if - local.get $3 + local.get $1 local.get $2 i32.store offset=4 else @@ -22607,7 +22708,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 @@ -22619,12 +22720,12 @@ local.get $5 i32.const 12 i32.mul - local.get $3 - i32.add - local.tee $3 local.get $1 - i32.store8 + i32.add + local.tee $1 local.get $3 + i32.store8 + local.get $1 local.get $2 i32.store offset=4 local.get $0 @@ -22633,7 +22734,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load local.get $0 @@ -22647,7 +22748,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -22754,6 +22855,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -22781,7 +22883,7 @@ i32.load offset=16 local.tee $4 call $~lib/array/Array#constructor - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 local.get $2 @@ -22799,15 +22901,16 @@ i32.and i32.eqz if - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - call $~lib/array/Array#__set local.get $1 + local.tee $0 i32.const 1 i32.add local.set $1 + local.get $6 + local.get $0 + local.get $5 + i32.load offset=4 + call $~lib/array/Array#__set end local.get $2 i32.const 1 @@ -22816,19 +22919,19 @@ br $for-loop|0 end end - local.get $0 + local.get $6 local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $0 + local.get $6 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $6 ) (func $~lib/map/Map#constructor (result i32) (local $0 i32) @@ -22920,51 +23023,51 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + local.tee $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $1 if - local.get $3 - local.get $3 + local.get $1 i32.load offset=8 local.tee $5 i32.const 1 @@ -22972,25 +23075,25 @@ if (result i32) i32.const 0 else - local.get $1 local.get $3 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end - local.tee $3 + local.get $1 if - local.get $3 + local.get $1 local.get $2 i32.store offset=4 else @@ -23026,7 +23129,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 @@ -23038,12 +23141,12 @@ local.get $5 i32.const 12 i32.mul - local.get $3 - i32.add - local.tee $3 local.get $1 - i32.store + i32.add + local.tee $1 local.get $3 + i32.store + local.get $1 local.get $2 i32.store offset=4 local.get $0 @@ -23052,7 +23155,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load local.get $0 @@ -23066,7 +23169,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -23096,53 +23199,53 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $1 if - local.get $3 - local.get $3 + local.get $1 i32.load offset=8 local.tee $5 i32.const 1 @@ -23150,27 +23253,27 @@ if (result i32) i32.const 0 else - local.get $3 - i32.load8_u local.get $1 + i32.load8_u + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end - local.tee $3 + local.get $1 if - local.get $3 + local.get $1 local.get $2 i32.store offset=4 else @@ -23206,7 +23309,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 @@ -23218,12 +23321,12 @@ local.get $5 i32.const 12 i32.mul - local.get $3 - i32.add - local.tee $3 local.get $1 - i32.store8 + i32.add + local.tee $1 local.get $3 + i32.store8 + local.get $1 local.get $2 i32.store offset=4 local.get $0 @@ -23232,7 +23335,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load local.get $0 @@ -23246,7 +23349,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -23276,52 +23379,52 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - 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 $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + local.tee $3 + 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 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $1 if - local.get $3 - local.get $3 + local.get $1 i32.load offset=8 local.tee $5 i32.const 1 @@ -23329,27 +23432,27 @@ if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end - local.tee $3 + local.get $1 if - local.get $3 + local.get $1 local.get $2 i32.store offset=4 else @@ -23385,7 +23488,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 @@ -23397,12 +23500,12 @@ local.get $5 i32.const 12 i32.mul - local.get $3 - i32.add - local.tee $3 local.get $1 - i32.store16 + i32.add + local.tee $1 local.get $3 + i32.store16 + local.get $1 local.get $2 i32.store offset=4 local.get $0 @@ -23411,7 +23514,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load local.get $0 @@ -23425,7 +23528,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -23455,53 +23558,53 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $1 if - local.get $3 - local.get $3 + local.get $1 i32.load offset=8 local.tee $5 i32.const 1 @@ -23509,27 +23612,27 @@ if (result i32) i32.const 0 else - local.get $3 - i32.load16_u local.get $1 + i32.load16_u + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end - local.tee $3 + local.get $1 if - local.get $3 + local.get $1 local.get $2 i32.store offset=4 else @@ -23565,7 +23668,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 @@ -23577,12 +23680,12 @@ local.get $5 i32.const 12 i32.mul - local.get $3 - i32.add - local.tee $3 local.get $1 - i32.store16 + i32.add + local.tee $1 local.get $3 + i32.store16 + local.get $1 local.get $2 i32.store offset=4 local.get $0 @@ -23591,7 +23694,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load local.get $0 @@ -23605,7 +23708,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -23635,51 +23738,51 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + local.tee $3 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + local.get $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + local.get $1 + i32.const 16 + i32.shr_u + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $1 if - local.get $3 - local.get $3 + local.get $1 i32.load offset=8 local.tee $5 i32.const 1 @@ -23687,25 +23790,25 @@ if (result i32) i32.const 0 else - local.get $1 local.get $3 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end - local.tee $3 + local.get $1 if - local.get $3 + local.get $1 local.get $2 i32.store offset=4 else @@ -23741,7 +23844,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.store local.get $0 local.get $0 @@ -23753,12 +23856,12 @@ local.get $5 i32.const 12 i32.mul - local.get $3 - i32.add - local.tee $3 local.get $1 - i32.store + i32.add + local.tee $1 local.get $3 + i32.store + local.get $1 local.get $2 i32.store offset=4 local.get $0 @@ -23767,7 +23870,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $3 + local.get $1 local.get $0 i32.load local.get $0 @@ -23781,7 +23884,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -23811,62 +23914,61 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $3 if - local.get $3 local.get $3 i32.load offset=12 local.tee $5 @@ -23881,7 +23983,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and @@ -23890,8 +23991,9 @@ end end i32.const 0 + local.set $3 end - local.tee $3 + local.get $3 if local.get $3 local.get $2 @@ -23983,6 +24085,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24010,7 +24113,7 @@ i32.load offset=16 local.tee $4 call $~lib/array/Array#constructor - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 local.get $2 @@ -24028,15 +24131,16 @@ i32.and i32.eqz if - local.get $0 - local.get $1 - local.get $5 - i32.load offset=8 - call $~lib/array/Array#__set local.get $1 + local.tee $0 i32.const 1 i32.add local.set $1 + local.get $6 + local.get $0 + local.get $5 + i32.load offset=8 + call $~lib/array/Array#__set end local.get $2 i32.const 1 @@ -24045,19 +24149,19 @@ br $for-loop|0 end end - local.get $0 + local.get $6 local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $0 + local.get $6 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $6 ) (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -24081,62 +24185,61 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $3 if - local.get $3 local.get $3 i32.load offset=12 local.tee $5 @@ -24151,7 +24254,6 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and @@ -24160,8 +24262,9 @@ end end i32.const 0 + local.set $3 end - local.tee $3 + local.get $3 if local.get $3 local.get $2 @@ -24269,51 +24372,50 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $3 if - local.get $3 local.get $3 i32.load offset=8 local.tee $5 @@ -24328,7 +24430,6 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $5 i32.const -2 i32.and @@ -24337,8 +24438,9 @@ end end i32.const 0 + local.set $3 end - local.tee $3 + local.get $3 if local.get $3 local.get $2 @@ -24447,64 +24549,63 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 + local.get $0 + i32.load + local.get $1 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $3 if - local.get $3 local.get $3 i32.load offset=12 local.tee $6 @@ -24519,7 +24620,6 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - drop local.get $6 i32.const -2 i32.and @@ -24528,8 +24628,9 @@ end end i32.const 0 + local.set $3 end - local.tee $3 + local.get $3 if local.get $3 local.get $2 diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 95bd63739f..45a5de7d71 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -4,9 +4,8 @@ (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) + (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) (type $none_=>_f64 (func (result f64))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) @@ -14,6 +13,7 @@ (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_i32 (func (param i64) (result i32))) + (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $i64_=>_none (func (param i64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (type $f64_=>_none (func (param f64))) @@ -739,12 +739,12 @@ f64.sub local.tee $3 f64.sqrt - local.tee $0 + local.tee $4 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $4 + local.tee $0 local.get $3 local.get $3 local.get $3 @@ -786,15 +786,15 @@ f64.const 1 f64.add f64.div - local.get $0 + local.get $4 f64.mul local.get $3 - local.get $4 - local.get $4 + local.get $0 + local.get $0 f64.mul f64.sub - local.get $0 local.get $4 + local.get $0 f64.add f64.div f64.add @@ -925,12 +925,12 @@ f32.sub local.tee $3 f32.sqrt - local.tee $0 + local.tee $4 i32.reinterpret_f32 i32.const -4096 i32.and f32.reinterpret_i32 - local.tee $4 + local.tee $0 local.get $3 local.get $3 local.get $3 @@ -948,15 +948,15 @@ f32.const 1 f32.add f32.div - local.get $0 + local.get $4 f32.mul local.get $3 - local.get $4 - local.get $4 + local.get $0 + local.get $0 f32.mul f32.sub - local.get $0 local.get $4 + local.get $0 f32.add f32.div f32.add @@ -1402,8 +1402,8 @@ end ) (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i64) - (local $4 f64) + (local $3 f64) + (local $4 i64) block $__inlined_func$~lib/math/NativeMath.acosh (result f64) local.get $0 local.get $0 @@ -1412,29 +1412,29 @@ f64.div local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $4 i64.const 4607182418800017408 i64.lt_s br_if $__inlined_func$~lib/math/NativeMath.acosh drop - local.get $3 + local.get $4 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $3 + local.tee $4 i64.const 1024 i64.lt_u if local.get $0 f64.const 1 f64.sub - local.tee $4 - local.get $4 - local.get $4 + local.tee $3 + local.get $3 + local.get $3 f64.mul - local.get $4 - local.get $4 + local.get $3 + local.get $3 f64.add f64.add f64.sqrt @@ -1442,7 +1442,7 @@ call $~lib/math/NativeMath.log1p br $__inlined_func$~lib/math/NativeMath.acosh end - local.get $3 + local.get $4 i64.const 1049 i64.lt_u if @@ -1925,15 +1925,15 @@ f64.const 0.5 f64.mul f64.sub - local.tee $4 + local.tee $0 f64.sqrt - local.set $0 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 + local.set $3 + 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 @@ -1951,10 +1951,10 @@ f64.const 0.16666666666666666 f64.add f64.mul - local.get $4 - local.get $4 - local.get $4 - local.get $4 + local.get $0 + local.get $0 + local.get $0 + local.get $0 f64.const 0.07703815055590194 f64.mul f64.const -0.6882839716054533 @@ -1969,15 +1969,15 @@ f64.const 1 f64.add f64.div - local.set $3 + local.set $4 local.get $1 i32.const 1072640819 i32.ge_u if (result f64) f64.const 1.5707963267948966 - local.get $0 - local.get $0 local.get $3 + local.get $3 + local.get $4 f64.mul f64.add f64.const 2 @@ -1987,24 +1987,24 @@ f64.sub else f64.const 0.7853981633974483 - local.get $0 - local.get $0 - f64.add local.get $3 + local.get $3 + f64.add + local.get $4 f64.mul f64.const 6.123233995736766e-17 - local.get $4 local.get $0 + local.get $3 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 f64.mul f64.sub - local.get $0 local.get $3 + local.get $0 f64.add f64.div f64.const 2 @@ -2012,8 +2012,8 @@ f64.sub f64.sub f64.const 0.7853981633974483 - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.add f64.sub f64.sub @@ -2032,8 +2032,8 @@ ) (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) (local $1 i32) - (local $2 f32) - (local $3 f64) + (local $2 f64) + (local $3 f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 @@ -2108,14 +2108,14 @@ f32.const 0.5 f32.mul f32.sub - local.tee $2 + local.tee $3 f64.promote_f32 f64.sqrt - local.tee $3 - local.get $3 - local.get $2 - local.get $2 + 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 @@ -2124,7 +2124,7 @@ f32.const 0.16666586697101593 f32.add f32.mul - local.get $2 + local.get $3 f32.const -0.7066296339035034 f32.mul f32.const 1 @@ -3025,14 +3025,11 @@ i32.const 0 end ) - (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) + (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $__inlined_func$~lib/math/NativeMathf.atan2 (result f32) - local.get $1 - local.get $0 - f32.add + block $folding-inner0 local.get $0 local.get $0 f32.ne @@ -3040,128 +3037,118 @@ local.get $1 f32.ne i32.or - br_if $__inlined_func$~lib/math/NativeMathf.atan2 - drop + if + local.get $1 + local.get $0 + f32.add + return + end local.get $1 i32.reinterpret_f32 - local.tee $5 + local.tee $3 i32.const 1065353216 i32.eq if local.get $0 call $~lib/math/NativeMathf.atan - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end - local.get $5 + local.get $3 i32.const 30 i32.shr_u i32.const 2 i32.and local.get $0 i32.reinterpret_f32 - local.tee $6 + local.tee $4 i32.const 31 i32.shr_u i32.or - local.set $4 - local.get $6 + local.set $2 + local.get $4 i32.const 2147483647 i32.and - local.tee $6 + local.tee $4 i32.eqz if block $break|0 block $case3|0 block $case2|0 block $case1|0 - local.get $4 + local.get $2 br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 end local.get $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end f32.const 3.1415927410125732 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end f32.const -3.1415927410125732 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $4 - i32.const 1 - i32.and - select - local.get $5 + local.get $3 i32.const 2147483647 i32.and - local.tee $5 + local.tee $3 i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.atan2 - drop - local.get $5 + br_if $folding-inner0 + local.get $3 i32.const 2139095040 i32.eq if - local.get $6 + local.get $4 i32.const 2139095040 i32.eq if (result f32) f32.const 2.356194496154785 f32.const 0.7853981852531433 - local.get $4 + local.get $2 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $4 + local.get $2 i32.const 1 i32.and select else f32.const 3.1415927410125732 f32.const 0 - local.get $4 + local.get $2 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $4 + local.get $2 i32.const 1 i32.and select end - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 local.get $4 - i32.const 1 - i32.and - select - local.get $6 i32.const 2139095040 i32.eq - local.get $6 - local.get $5 + local.get $4 + local.get $3 i32.const 218103808 i32.add i32.gt_u i32.or - br_if $__inlined_func$~lib/math/NativeMathf.atan2 - drop - local.get $5 - local.get $6 + br_if $folding-inner0 + local.get $3 + local.get $4 i32.const 218103808 i32.add i32.gt_u i32.const 0 - local.get $4 + local.get $2 i32.const 2 i32.and select @@ -3180,35 +3167,38 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $4 + local.get $2 br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 end local.get $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end local.get $0 f32.neg - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end f32.const 3.1415927410125732 local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.sub - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.const 3.1415927410125732 f32.sub - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end unreachable end + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 local.get $2 - local.get $3 - call $std/math/check + i32.const 1 + i32.and + select ) (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 i32) @@ -3402,38 +3392,38 @@ f64.mul local.get $3 f64.mul - local.set $6 + local.set $7 local.get $3 local.get $0 f64.promote_f32 - local.tee $7 - local.get $7 + local.tee $6 + local.get $6 f64.add local.tee $3 - local.get $6 + local.get $7 f64.add f64.mul - local.get $7 local.get $6 + local.get $7 f64.add - local.get $6 + local.get $7 f64.add f64.div - local.tee $8 - local.get $8 + local.tee $7 + local.get $7 f64.mul - local.get $8 + local.get $7 f64.mul - local.set $6 - local.get $8 + local.set $8 + local.get $7 local.get $3 - local.get $6 + local.get $8 f64.add f64.mul - local.get $7 local.get $6 + local.get $8 f64.add - local.get $6 + local.get $8 f64.add f64.div f32.demote_f64 @@ -5867,166 +5857,169 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 f64) - (local $8 f64) + (local $7 i32) + (local $8 i32) (local $9 f64) - (local $10 i32) + (local $10 f64) (local $11 f64) - (local $12 i32) + (local $12 f64) (local $13 f64) - block $__inlined_func$~lib/math/NativeMath.hypot (result f64) - local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $5 - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - i64.gt_u - if - local.get $4 - local.get $5 - local.set $4 - local.set $5 - end + local.get $1 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.gt_u + if + local.get $4 local.get $5 - f64.reinterpret_i64 - local.tee $1 + local.set $4 + local.set $5 + end + local.get $5 + f64.reinterpret_i64 + local.tee $9 + local.set $0 + block $__inlined_func$~lib/math/NativeMath.hypot local.get $5 i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $10 + local.tee $7 i32.const 2047 i32.eq br_if $__inlined_func$~lib/math/NativeMath.hypot - drop local.get $4 f64.reinterpret_i64 - local.tee $0 + 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 $12 + local.tee $8 i32.const 2047 i32.eq i32.or br_if $__inlined_func$~lib/math/NativeMath.hypot - drop - local.get $0 local.get $1 + local.get $9 f64.add - local.get $12 - local.get $10 + 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 - drop f64.const 1 - local.set $11 - local.get $12 + local.set $0 + local.get $8 i32.const 1533 i32.gt_u if (result f64) f64.const 5260135901548373507240989e186 - local.set $11 + local.set $0 local.get $1 f64.const 1.90109156629516e-211 f64.mul local.set $1 - local.get $0 + local.get $9 f64.const 1.90109156629516e-211 f64.mul else - local.get $10 + local.get $7 i32.const 573 i32.lt_u if (result f64) f64.const 1.90109156629516e-211 - local.set $11 + local.set $0 local.get $1 f64.const 5260135901548373507240989e186 f64.mul local.set $1 - local.get $0 + local.get $9 f64.const 5260135901548373507240989e186 f64.mul else - local.get $0 + local.get $9 end end - local.tee $7 - local.get $7 - local.get $7 + local.set $9 + local.get $1 + local.get $1 + local.get $1 f64.const 134217729 f64.mul - local.tee $0 + local.tee $10 f64.sub - local.get $0 + local.get $10 f64.add - local.tee $0 + local.tee $10 f64.sub - local.set $9 - local.get $1 - local.get $1 - local.get $1 + local.set $12 + local.get $9 + local.get $9 + local.get $9 f64.const 134217729 f64.mul - local.tee $8 + local.tee $11 f64.sub - local.get $8 + local.get $11 f64.add - local.tee $13 + local.tee $11 f64.sub - local.set $8 + local.set $13 + local.get $0 + local.get $11 local.get $11 - local.get $13 - local.get $13 f64.mul - local.get $1 - local.get $1 + local.get $9 + local.get $9 f64.mul - local.tee $1 + local.tee $0 f64.sub - local.get $13 - local.get $13 + local.get $11 + local.get $11 f64.add - local.get $8 + local.get $13 f64.add - local.get $8 + local.get $13 f64.mul f64.add - local.get $0 - local.get $0 + local.get $10 + local.get $10 f64.mul - local.get $7 - local.get $7 + local.get $1 + local.get $1 f64.mul - local.tee $7 + local.tee $1 f64.sub - local.get $0 - local.get $0 + local.get $10 + local.get $10 f64.add - local.get $9 + local.get $12 f64.add - local.get $9 + local.get $12 f64.mul f64.add f64.add - local.get $1 + local.get $0 f64.add - local.get $7 + local.get $1 f64.add f64.sqrt f64.mul + local.set $0 end + local.get $0 local.get $2 local.get $3 call $std/math/check @@ -6036,7 +6029,6 @@ (local $5 i32) (local $6 i32) (local $7 f64) - (local $8 f32) block $__inlined_func$~lib/math/NativeMathf.hypot (result f32) local.get $1 i32.reinterpret_f32 @@ -6055,6 +6047,9 @@ local.set $4 local.set $5 end + local.get $4 + f32.reinterpret_i32 + local.set $0 local.get $5 f32.reinterpret_i32 local.tee $1 @@ -6063,9 +6058,7 @@ i32.eq br_if $__inlined_func$~lib/math/NativeMathf.hypot drop - local.get $4 - f32.reinterpret_i32 - local.tee $8 + local.get $0 local.get $1 f32.add local.get $5 @@ -6082,42 +6075,38 @@ i32.or br_if $__inlined_func$~lib/math/NativeMathf.hypot drop - f32.const 1 - local.set $0 local.get $4 i32.const 1568669696 i32.ge_u if (result f32) - f32.const 1237940039285380274899124e3 + 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 - local.get $8 - f32.const 8.077935669463161e-28 - f32.mul + f32.const 1237940039285380274899124e3 else local.get $5 i32.const 562036736 i32.lt_u if (result f32) - f32.const 8.077935669463161e-28 + local.get $0 + f32.const 1237940039285380274899124e3 + f32.mul local.set $0 local.get $1 f32.const 1237940039285380274899124e3 f32.mul local.set $1 - local.get $8 - f32.const 1237940039285380274899124e3 - f32.mul + f32.const 8.077935669463161e-28 else - local.get $8 + f32.const 1 end end - local.set $8 local.get $0 - local.get $8 f64.promote_f32 local.tee $7 local.get $7 @@ -6350,8 +6339,8 @@ ) (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 $4 f32) + (local $5 i32) (local $6 f32) (local $7 f32) (local $8 f32) @@ -6389,7 +6378,7 @@ br_if $__inlined_func$~lib/math/NativeMathf.log10 drop i32.const -25 - local.set $4 + local.set $5 local.get $0 f32.const 33554432 f32.mul @@ -6430,8 +6419,8 @@ local.tee $0 local.get $0 f32.mul - local.tee $5 - local.get $5 + local.tee $4 + local.get $4 f32.mul local.set $8 local.get $3 @@ -6439,7 +6428,7 @@ i32.shr_u i32.const 127 i32.sub - local.get $4 + local.get $5 i32.add f32.convert_i32_s local.tee $6 @@ -6464,7 +6453,7 @@ f32.sub local.get $0 local.get $7 - local.get $5 + local.get $4 local.get $8 f32.const 0.2849878668785095 f32.mul @@ -10024,81 +10013,86 @@ ) (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) - block $__inlined_func$~lib/math/NativeMath.sinh (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 + (local $4 f64) + (local $5 i32) + (local $6 i64) + (local $7 f64) + local.get $0 + local.set $3 + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $6 + f64.reinterpret_i64 + local.set $7 + f64.const 0.5 + local.get $0 + f64.copysign + local.set $4 + block $__inlined_func$~lib/math/NativeMath.sinh + local.get $6 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $5 i32.const 1082535490 i32.lt_u if - local.get $6 + local.get $7 call $~lib/math/NativeMath.expm1 - local.set $6 - local.get $4 + local.set $7 + local.get $5 i32.const 1072693248 i32.lt_u if - local.get $0 - local.get $4 + local.get $5 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.sinh - drop - local.get $3 - local.get $6 - local.get $6 + local.get $4 + local.get $7 + local.get $7 f64.add - local.get $6 - local.get $6 + local.get $7 + local.get $7 f64.mul - local.get $6 + local.get $7 f64.const 1 f64.add f64.div f64.sub f64.mul + local.set $3 br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $3 - local.get $6 - local.get $6 - local.get $6 + local.get $4 + local.get $7 + local.get $7 + local.get $7 f64.const 1 f64.add f64.div f64.add f64.mul + local.set $3 br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $6 + local.get $7 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp - local.get $3 - local.get $3 + local.get $4 + local.get $4 f64.add f64.const 2247116418577894884661631e283 f64.mul f64.mul f64.const 2247116418577894884661631e283 f64.mul + local.set $3 end + local.get $3 local.get $1 local.get $2 call $std/math/check @@ -10116,18 +10110,18 @@ (local $3 f32) (local $4 i32) (local $5 f32) - block $__inlined_func$~lib/math/NativeMathf.sinh (result 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 + 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 local.get $4 i32.const 1118925335 i32.lt_u @@ -10139,12 +10133,10 @@ i32.const 1065353216 i32.lt_u if - local.get $0 local.get $4 i32.const 964689920 i32.lt_u br_if $__inlined_func$~lib/math/NativeMathf.sinh - drop local.get $3 local.get $5 local.get $5 @@ -10158,6 +10150,7 @@ f32.div f32.sub f32.mul + local.set $0 br $__inlined_func$~lib/math/NativeMathf.sinh end local.get $3 @@ -10169,6 +10162,7 @@ f32.div f32.add f32.mul + local.set $0 br $__inlined_func$~lib/math/NativeMathf.sinh end local.get $5 @@ -10183,7 +10177,9 @@ f32.mul f32.const 1661534994731144841129758e11 f32.mul + local.set $0 end + local.get $0 local.get $1 local.get $2 call $std/math/check @@ -18001,9 +17997,10 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 + call $~lib/math/NativeMathf.atan2 f32.const -1.0585895776748657 f32.const -0.22352588176727295 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18015,9 +18012,10 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 + call $~lib/math/NativeMathf.atan2 f32.const 2.686873435974121 f32.const 0.09464472532272339 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18029,9 +18027,10 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.atan2 f32.const -1.8893001079559326 f32.const -0.21941901743412018 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18043,9 +18042,10 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 + call $~lib/math/NativeMathf.atan2 f32.const -0.9605468511581421 f32.const 0.46015575528144836 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18057,9 +18057,10 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 + call $~lib/math/NativeMathf.atan2 f32.const 1.0919123888015747 f32.const -0.05708503723144531 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18071,9 +18072,10 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.atan2 f32.const -1.4685084819793701 f32.const 0.19611206650733948 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18085,9 +18087,10 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.atan2 f32.const 1.5641601085662842 f32.const 0.48143187165260315 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18099,9 +18102,10 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 + call $~lib/math/NativeMathf.atan2 f32.const -0.10281659662723541 f32.const -0.4216274917125702 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18113,9 +18117,10 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.atan2 f32.const 0.29697975516319275 f32.const 0.2322007566690445 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18127,9 +18132,10 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.atan2 f32.const -1.5131611824035645 f32.const 0.16620726883411407 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18141,9 +18147,10 @@ end f32.const 0 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18155,9 +18162,10 @@ end f32.const 0 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18169,9 +18177,10 @@ end f32.const 0 f32.const -1 + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18183,9 +18192,10 @@ end f32.const 0 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18197,9 +18207,10 @@ end f32.const 0 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18211,9 +18222,10 @@ end f32.const 0 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18225,9 +18237,10 @@ end f32.const -0 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18239,9 +18252,10 @@ end f32.const -0 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18253,9 +18267,10 @@ end f32.const -0 f32.const -1 + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18267,9 +18282,10 @@ end f32.const -0 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18281,9 +18297,10 @@ end f32.const -0 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18295,9 +18312,10 @@ end f32.const -0 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18309,9 +18327,10 @@ end f32.const -1 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18323,9 +18342,10 @@ end f32.const -1 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18337,9 +18357,10 @@ end f32.const 1 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18351,9 +18372,10 @@ end f32.const 1 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18365,9 +18387,10 @@ end f32.const -1 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18379,9 +18402,10 @@ end f32.const 1 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18393,9 +18417,10 @@ end f32.const -1 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18407,9 +18432,10 @@ end f32.const 1 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18421,9 +18447,10 @@ end f32.const inf f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18435,9 +18462,10 @@ end f32.const -inf f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18449,9 +18477,10 @@ end f32.const inf f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0.7853981852531433 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18463,9 +18492,10 @@ end f32.const inf f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 2.356194496154785 f32.const 0.02500828728079796 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18477,9 +18507,10 @@ end f32.const -inf f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0.7853981852531433 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18491,9 +18522,10 @@ end f32.const -inf f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -2.356194496154785 f32.const -0.02500828728079796 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18505,9 +18537,10 @@ end f32.const 5.877471754111438e-39 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18519,9 +18552,10 @@ end f32.const 1 f32.const 1701411834604692317316873e14 + call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -44036,9 +44070,9 @@ local.get $6 i64.xor local.tee $6 - local.get $6 i64.const 17 i64.shr_u + local.get $6 i64.xor i64.xor local.get $2 diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 797cbb8408..27e13d7352 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -679,38 +679,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17860 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -726,221 +799,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17860 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17860 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17860 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17860 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1053,7 +1051,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1090,13 +1088,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1130,16 +1128,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1192,7 +1190,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1207,7 +1205,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1230,8 +1228,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1244,11 +1242,11 @@ i32.const 8 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1263,7 +1261,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1284,7 +1282,7 @@ local.get $0 i32.const 8 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.sub i32.const 0 @@ -1295,12 +1293,12 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $1 i32.const 3 i32.sub i32.const 0 @@ -1308,12 +1306,12 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 local.get $0 i32.store local.get $0 @@ -1378,19 +1376,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1400,22 +1398,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17860 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1429,7 +1427,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1441,7 +1439,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1449,15 +1447,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1465,7 +1463,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1475,7 +1473,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1493,25 +1491,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 3eefe0db84..cc99235291 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -21,6 +21,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -55,47 +56,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -106,17 +107,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -129,7 +129,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~start diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index efaa0b6304..2c34b2475b 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -738,38 +738,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17956 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -785,221 +858,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17956 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17956 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17956 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17956 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1097,13 +1095,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1194,17 +1192,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1213,19 +1211,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1255,8 +1253,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1286,36 +1284,37 @@ i32.const 20 i32.add local.tee $0 + local.tee $1 i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -3476,19 +3475,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -3498,22 +3497,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17956 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -3527,7 +3526,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -3539,7 +3538,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -3547,15 +3546,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -3563,7 +3562,7 @@ else i32.const 1520 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -3573,7 +3572,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1524 @@ -3591,25 +3590,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index b439c19c0f..445ebedfe3 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -202,19 +202,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -826,38 +824,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18220 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -873,221 +944,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18220 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18220 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18220 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18220 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1459,11 +1455,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1474,19 +1470,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1494,7 +1491,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1505,16 +1502,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1525,16 +1522,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1542,7 +1539,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1550,8 +1547,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1568,7 +1565,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1578,13 +1575,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1597,40 +1594,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1660,8 +1657,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1783,23 +1780,23 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and @@ -1862,52 +1859,52 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - 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 $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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + local.tee $2 + 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 + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $2 + local.get $1 if - local.get $2 - local.get $2 + local.get $1 i32.load offset=4 local.tee $4 i32.const 1 @@ -1915,24 +1912,25 @@ if (result i32) i32.const 0 else - local.get $2 - i32.load8_u local.get $1 + i32.load8_u + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end + local.get $1 i32.eqz if local.get $0 @@ -1966,7 +1964,7 @@ end local.get $0 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 local.get $0 i32.load offset=16 @@ -1977,10 +1975,10 @@ local.get $4 i32.const 3 i32.shl - local.get $2 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store8 local.get $0 local.get $0 @@ -1988,7 +1986,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 @@ -2002,7 +2000,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -2688,313 +2686,313 @@ i32.store8 end ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $0 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $2 - local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $1 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $4 - local.get $1 + i32.load offset=8 + local.tee $8 local.get $2 - i32.load offset=16 - local.tee $2 + i32.shr_u local.get $1 - local.get $2 i32.lt_u - select - local.set $5 - block $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.tee $1 - local.get $0 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 + if + i32.const 1073741820 + local.get $2 + i32.shr_u local.get $1 - i32.sub - local.get $5 - i32.sub - i32.const 0 - local.get $5 - i32.const 1 - i32.shl - i32.sub - i32.le_u + i32.lt_u if - local.get $1 - local.get $0 - local.get $5 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + i32.const 1456 + i32.const 1616 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable end local.get $0 + i32.load + local.set $7 + local.get $1 + i32.const 8 local.get $1 + i32.const 8 i32.gt_u - if - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 + select + local.get $2 + i32.shl + local.set $6 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $3 + if + local.get $8 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1073741820 + local.get $1 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 + local.get $6 + local.get $1 + local.get $6 + i32.gt_u + select + local.set $6 + end + local.get $6 + local.get $7 + local.tee $1 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $6 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $6 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $6 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $6 + i32.gt_u + select + local.set $9 + block $~lib/util/memory/memmove|inlined.0 + local.get $3 + local.tee $2 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $2 + i32.sub + local.get $9 + i32.sub + i32.const 0 + local.get $9 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + local.get $9 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + local.get $2 + i32.gt_u + if local.get $1 i32.const 7 i32.and + local.get $2 + i32.const 7 + i32.and + i32.eq if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 + loop $while-continue|0 + local.get $2 + i32.const 7 + i32.and + if + local.get $9 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $2 + local.tee $5 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $5 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $9 + i32.const 8 + i32.ge_u + if + local.get $2 + local.get $1 + i64.load + i64.store + local.get $9 + i32.const 8 + i32.sub + local.set $9 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end end - end - loop $while-continue|1 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $5 - i32.const 8 - i32.sub - local.set $5 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 + loop $while-continue|2 + local.get $9 + if + local.get $2 + local.tee $5 + i32.const 1 + i32.add + local.set $2 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $5 + local.get $4 + i32.load8_u + i32.store8 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|2 + end end - end - end - loop $while-continue|2 - local.get $5 - if + else local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 + i32.const 7 + i32.and local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $5 - i32.add i32.const 7 i32.and + i32.eq if - local.get $5 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 + loop $while-continue|3 + local.get $2 + local.get $9 + i32.add + i32.const 7 + i32.and + if + local.get $9 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $9 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + i32.add + local.get $1 + local.get $9 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $9 + i32.const 8 + i32.ge_u + if + local.get $9 + i32.const 8 + i32.sub + local.tee $9 + local.get $2 + i32.add + local.get $1 + local.get $9 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end end - end - loop $while-continue|4 - local.get $5 - i32.const 8 - i32.ge_u - if - local.get $5 - i32.const 8 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i64.load - i64.store - br $while-continue|4 + loop $while-continue|5 + local.get $9 + if + local.get $9 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + i32.add + local.get $1 + local.get $9 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end end end end - loop $while-continue|5 - local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - local.get $1 - i32.add - local.get $0 - local.get $5 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $4 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1073741820 - local.get $2 - i32.shr_u - local.get $1 - i32.lt_u - if - i32.const 1456 - i32.const 1616 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 - i32.shl - local.set $1 - local.get $0 - i32.load - local.tee $2 - local.get $3 - if - local.get $4 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1073741820 local.get $3 - i32.const 1073741820 - i32.lt_u - select - local.tee $3 - local.get $1 - local.get $1 - local.get $3 - i32.lt_u - select local.set $1 end local.get $1 - call $~lib/rt/itcms/__renew - local.tee $3 - local.get $4 + local.get $8 i32.add - local.get $1 - local.get $4 + local.get $6 + local.get $8 i32.sub call $~lib/memory/memory.fill - local.get $2 - local.get $3 + local.get $1 + local.get $7 i32.ne if local.get $0 - local.get $3 + local.get $1 i32.store local.get $0 - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 + local.get $1 if local.get $0 - local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end end local.get $0 - local.get $1 + local.get $6 i32.store offset=8 end ) @@ -3057,51 +3055,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -3118,7 +3115,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -3127,8 +3123,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -3251,7 +3248,7 @@ local.tee $4 i32.store loop $for-loop|1 - local.get $2 + local.get $1 i32.extend8_s i32.const 100 i32.lt_s @@ -3260,7 +3257,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3270,36 +3268,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -3307,9 +3305,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load8_u - local.get $2 + local.get $3 i32.const 255 i32.and i32.eq @@ -3318,14 +3316,14 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 if i32.const 0 i32.const 1568 @@ -3335,13 +3333,14 @@ unreachable end local.get $4 - local.get $2 + local.get $1 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3351,36 +3350,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -3388,9 +3387,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load8_u - local.get $2 + local.get $3 i32.const 255 i32.and i32.eq @@ -3399,14 +3398,16 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3416,10 +3417,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|1 end end @@ -3436,9 +3437,9 @@ unreachable end i32.const 50 - local.set $2 + local.set $1 loop $for-loop|3 - local.get $2 + local.get $1 i32.extend8_s i32.const 100 i32.lt_s @@ -3447,7 +3448,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3457,36 +3459,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -3494,9 +3496,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load8_u - local.get $2 + local.get $3 i32.const 255 i32.and i32.eq @@ -3505,14 +3507,16 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3523,13 +3527,14 @@ unreachable end local.get $4 - local.get $2 + local.get $1 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend8_s i32.const -1028477379 i32.mul @@ -3539,36 +3544,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -3576,9 +3581,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load8_u - local.get $2 + local.get $3 i32.const 255 i32.and i32.eq @@ -3587,14 +3592,16 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3604,10 +3611,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|3 end end @@ -3624,8 +3631,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3634,17 +3640,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $7 i32.const 0 i32.store local.get $4 i32.load offset=8 - local.set $2 + local.set $5 local.get $4 i32.load offset=16 - local.tee $7 + local.tee $3 local.set $9 - local.get $6 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3653,10 +3659,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $1 i64.const 0 i64.store - local.get $8 + local.get $1 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new @@ -3692,28 +3698,28 @@ i32.const 8 i32.gt_u select - local.tee $11 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $11 i32.store offset=4 - local.get $8 local.get $11 + local.get $1 call $~lib/memory/memory.fill local.get $10 - local.get $8 + local.get $11 i32.store - local.get $8 + local.get $11 if local.get $10 - local.get $8 + local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $10 - local.get $8 + local.get $11 i32.store offset=4 local.get $10 - local.get $11 + local.get $1 i32.store offset=8 local.get $10 local.get $9 @@ -3722,70 +3728,77 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 local.get $10 i32.store loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $5 + local.get $8 i32.const 3 i32.shl - local.get $2 + local.get $5 i32.add - local.tee $6 + local.tee $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if + local.get $2 + local.tee $1 + i32.const 1 + i32.add + local.set $2 local.get $10 - local.get $0 - local.get $6 + local.get $1 + 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 $5 + local.get $8 i32.const 1 i32.add - local.set $5 + local.set $8 br $for-loop|0 end end local.get $10 - local.get $0 + local.get $2 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity local.get $10 - 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 + local.get $6 local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $0 + local.tee $3 i32.store offset=8 loop $for-loop|4 local.get $10 i32.load offset=12 - local.get $1 + local.get $0 i32.gt_s if local.get $10 - local.get $1 + local.get $0 call $~lib/array/Array#__get - local.tee $2 + local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3795,41 +3808,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.set $3 - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $3 - local.get $3 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 local.tee $5 i32.const 1 @@ -3837,7 +3845,7 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $1 i32.load8_u local.get $2 i32.const 255 @@ -3848,14 +3856,16 @@ local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3865,19 +3875,19 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 local.get $10 - local.get $1 + local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|4 end end - local.get $0 + local.get $3 i32.load offset=20 local.get $4 i32.load offset=20 @@ -3891,9 +3901,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|6 - local.get $1 + local.get $0 i32.extend8_s i32.const 50 i32.lt_s @@ -3902,7 +3912,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3912,44 +3923,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load8_u local.get $1 i32.const 255 @@ -3957,17 +3968,19 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -3978,13 +3991,14 @@ unreachable end local.get $4 - local.get $1 + local.get $0 call $~lib/set/Set#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -3994,44 +4008,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load8_u local.get $1 i32.const 255 @@ -4039,17 +4053,17 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 if i32.const 0 i32.const 1568 @@ -4058,10 +4072,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|6 end end @@ -4078,9 +4092,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|8 - local.get $1 + local.get $0 i32.extend8_s i32.const 50 i32.lt_s @@ -4089,7 +4103,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4099,44 +4114,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load8_u local.get $1 i32.const 255 @@ -4144,17 +4159,17 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 if i32.const 0 i32.const 1568 @@ -4164,13 +4179,14 @@ unreachable end local.get $4 - local.get $1 + local.get $0 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4180,44 +4196,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load8_u local.get $1 i32.const 255 @@ -4225,17 +4241,19 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -4246,13 +4264,14 @@ unreachable end local.get $4 - local.get $1 + local.get $0 call $~lib/set/Set#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4262,44 +4281,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load8_u local.get $1 i32.const 255 @@ -4307,17 +4326,17 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 if i32.const 0 i32.const 1568 @@ -4326,10 +4345,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|8 end end @@ -4459,23 +4478,23 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and @@ -4538,53 +4557,53 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $2 + local.get $1 if - local.get $2 - local.get $2 + local.get $1 i32.load offset=4 local.tee $4 i32.const 1 @@ -4592,24 +4611,25 @@ if (result i32) i32.const 0 else - local.get $2 - i32.load8_u local.get $1 + i32.load8_u + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end + local.get $1 i32.eqz if local.get $0 @@ -4643,7 +4663,7 @@ end local.get $0 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 local.get $0 i32.load offset=16 @@ -4654,10 +4674,10 @@ local.get $4 i32.const 3 i32.shl - local.get $2 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store8 local.get $0 local.get $0 @@ -4665,7 +4685,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 @@ -4679,7 +4699,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -4705,52 +4725,51 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -4767,7 +4786,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -4776,8 +4794,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -4860,7 +4879,7 @@ i32.store offset=8 local.get $3 call $~lib/set/Set#constructor - local.tee $10 + local.tee $4 i32.store loop $for-loop|1 local.get $1 @@ -4869,52 +4888,51 @@ i32.const 100 i32.lt_u if - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -4931,7 +4949,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $6 i32.const -2 i32.and @@ -4940,7 +4957,9 @@ end end i32.const 0 + local.set $5 end + local.get $5 if i32.const 0 i32.const 1568 @@ -4949,55 +4968,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $1 call $~lib/set/Set#add - block $__inlined_func$~lib/set/Set#find1 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -5014,7 +5032,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - drop local.get $6 i32.const -2 i32.and @@ -5023,7 +5040,11 @@ end end i32.const 0 + local.set $5 end + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5040,7 +5061,7 @@ br $for-loop|1 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -5061,52 +5082,51 @@ i32.const 100 i32.lt_u if - block $__inlined_func$~lib/set/Set#find4 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -5123,7 +5143,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - drop local.get $6 i32.const -2 i32.and @@ -5132,7 +5151,11 @@ end end i32.const 0 + local.set $5 end + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5142,55 +5165,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $1 call $~lib/set/Set#add - block $__inlined_func$~lib/set/Set#find7 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -5207,7 +5229,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - drop local.get $6 i32.const -2 i32.and @@ -5216,7 +5237,11 @@ end end i32.const 0 + local.set $5 end + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5233,7 +5258,7 @@ br $for-loop|3 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -5246,8 +5271,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -5256,17 +5280,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $7 i32.const 0 i32.store - local.get $10 + local.get $4 i32.load offset=8 - local.set $6 - local.get $10 + local.set $5 + local.get $4 i32.load offset=16 - local.tee $7 - local.set $1 - local.get $8 + local.tee $3 + local.set $9 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -5275,28 +5299,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i32.const 16 i32.const 6 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store offset=4 - local.get $9 + local.get $10 i32.const 0 i32.store offset=8 - local.get $9 + local.get $10 i32.const 0 i32.store offset=12 - local.get $1 + local.get $9 i32.const 1073741820 i32.gt_u if @@ -5308,154 +5332,155 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.const 8 - local.get $1 + local.get $9 i32.const 8 i32.gt_u select - local.tee $3 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 local.get $11 - local.get $3 + local.get $1 call $~lib/memory/memory.fill - local.get $9 + local.get $10 local.get $11 i32.store local.get $11 if - local.get $9 + local.get $10 local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $10 local.get $11 i32.store offset=4 - local.get $9 - local.get $3 + local.get $10 + local.get $1 i32.store offset=8 + local.get $10 local.get $9 - local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 - local.get $9 + local.get $7 + local.get $10 i32.store loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $4 + local.get $8 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add - local.tee $1 + local.tee $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $9 - local.get $2 - local.get $1 - i32.load8_u - call $~lib/array/Array#__set local.get $2 + local.tee $1 i32.const 1 i32.add local.set $2 + local.get $10 + local.get $1 + local.get $7 + i32.load8_u + call $~lib/array/Array#__set end - local.get $4 + local.get $8 i32.const 1 i32.add - local.set $4 + local.set $8 br $for-loop|0 end end - local.get $9 + local.get $10 local.get $2 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $9 + local.get $10 local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $3 i32.store offset=8 loop $for-loop|4 - local.get $9 + local.get $10 i32.load offset=12 local.get $0 i32.gt_s if - local.get $9 + local.get $10 local.get $0 call $~lib/array/Array#__get local.set $2 - block $__inlined_func$~lib/set/Set#find10 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -5469,8 +5494,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - drop - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -5478,7 +5502,9 @@ end end i32.const 0 + local.set $1 end + local.get $1 i32.const 0 i32.ne i32.eqz @@ -5491,7 +5517,7 @@ unreachable end local.get $3 - local.get $9 + local.get $10 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -5504,7 +5530,7 @@ end local.get $3 i32.load offset=20 - local.get $10 + local.get $4 i32.load offset=20 i32.ne if @@ -5524,52 +5550,51 @@ i32.const 50 i32.lt_u if - block $__inlined_func$~lib/set/Set#find13 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -5586,7 +5611,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - drop local.get $3 i32.const -2 i32.and @@ -5595,7 +5619,11 @@ end end i32.const 0 + local.set $2 end + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5605,55 +5633,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $0 call $~lib/set/Set#delete - block $__inlined_func$~lib/set/Set#find16 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -5670,7 +5697,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - drop local.get $3 i32.const -2 i32.and @@ -5679,7 +5705,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 if i32.const 0 i32.const 1568 @@ -5695,7 +5723,7 @@ br $for-loop|6 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -5716,52 +5744,51 @@ i32.const 50 i32.lt_u if - block $__inlined_func$~lib/set/Set#find19 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -5778,7 +5805,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - drop local.get $3 i32.const -2 i32.and @@ -5787,7 +5813,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 if i32.const 0 i32.const 1568 @@ -5796,55 +5824,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $0 call $~lib/set/Set#add - block $__inlined_func$~lib/set/Set#find22 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -5861,7 +5888,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - drop local.get $3 i32.const -2 i32.and @@ -5870,7 +5896,11 @@ end end i32.const 0 + local.set $2 end + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5880,55 +5910,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $0 - call $~lib/set/Set#delete - block $__inlined_func$~lib/set/Set#find25 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + call $~lib/set/Set#delete + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -5945,7 +5974,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - drop local.get $3 i32.const -2 i32.and @@ -5954,7 +5982,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 if i32.const 0 i32.const 1568 @@ -5970,7 +6000,7 @@ br $for-loop|8 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -5982,9 +6012,9 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 call $~lib/set/Set#clear - local.get $10 + local.get $4 i32.load offset=20 if i32.const 0 @@ -6095,23 +6125,23 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and @@ -6174,52 +6204,52 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + local.tee $2 + 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 + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $2 + local.get $1 if - local.get $2 - local.get $2 + local.get $1 i32.load offset=4 local.tee $4 i32.const 1 @@ -6227,24 +6257,25 @@ if (result i32) i32.const 0 else - local.get $2 - i32.load16_u local.get $1 + i32.load16_u + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end + local.get $1 i32.eqz if local.get $0 @@ -6278,7 +6309,7 @@ end local.get $0 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 local.get $0 i32.load offset=16 @@ -6289,10 +6320,10 @@ local.get $4 i32.const 3 i32.shl - local.get $2 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store16 local.get $0 local.get $0 @@ -6300,7 +6331,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 @@ -6314,7 +6345,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -6381,51 +6412,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -6442,7 +6472,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -6451,8 +6480,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -6538,7 +6568,7 @@ local.tee $4 i32.store loop $for-loop|1 - local.get $2 + local.get $1 i32.extend16_s i32.const 100 i32.lt_s @@ -6547,7 +6577,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6557,36 +6588,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -6594,9 +6625,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load16_u - local.get $2 + local.get $3 i32.const 65535 i32.and i32.eq @@ -6605,14 +6636,14 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 if i32.const 0 i32.const 1568 @@ -6622,13 +6653,14 @@ unreachable end local.get $4 - local.get $2 + local.get $1 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6638,36 +6670,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -6675,9 +6707,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load16_u - local.get $2 + local.get $3 i32.const 65535 i32.and i32.eq @@ -6686,14 +6718,16 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -6703,10 +6737,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|1 end end @@ -6723,9 +6757,9 @@ unreachable end i32.const 50 - local.set $2 + local.set $1 loop $for-loop|3 - local.get $2 + local.get $1 i32.extend16_s i32.const 100 i32.lt_s @@ -6734,7 +6768,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6744,36 +6779,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -6781,9 +6816,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load16_u - local.get $2 + local.get $3 i32.const 65535 i32.and i32.eq @@ -6792,14 +6827,16 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -6810,13 +6847,14 @@ unreachable end local.get $4 - local.get $2 + local.get $1 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $1 + local.tee $3 i32.extend16_s i32.const -1028477379 i32.mul @@ -6826,36 +6864,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 15 i32.shr_u + local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 13 i32.shr_u + local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $5 i32.const 16 i32.shr_u + local.get $5 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=4 local.tee $6 i32.const 1 @@ -6863,9 +6901,9 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.load16_u - local.get $2 + local.get $3 i32.const 65535 i32.and i32.eq @@ -6874,14 +6912,16 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -6891,10 +6931,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|3 end end @@ -6911,8 +6951,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6921,17 +6960,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $7 i32.const 0 i32.store local.get $4 i32.load offset=8 - local.set $2 + local.set $5 local.get $4 i32.load offset=16 - local.tee $7 + local.tee $3 local.set $9 - local.get $6 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -6940,10 +6979,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $1 i64.const 0 i64.store - local.get $8 + local.get $1 i32.const 16 i32.const 8 call $~lib/rt/itcms/__new @@ -6981,28 +7020,28 @@ select i32.const 1 i32.shl - local.tee $11 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $11 i32.store offset=4 - local.get $8 local.get $11 + local.get $1 call $~lib/memory/memory.fill local.get $10 - local.get $8 + local.get $11 i32.store - local.get $8 + local.get $11 if local.get $10 - local.get $8 + local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $10 - local.get $8 + local.get $11 i32.store offset=4 local.get $10 - local.get $11 + local.get $1 i32.store offset=8 local.get $10 local.get $9 @@ -7011,70 +7050,77 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 local.get $10 i32.store loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $5 + local.get $8 i32.const 3 i32.shl - local.get $2 + local.get $5 i32.add - local.tee $6 + local.tee $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if + local.get $2 + local.tee $1 + i32.const 1 + i32.add + local.set $2 local.get $10 - local.get $0 - local.get $6 + local.get $1 + 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 $5 + local.get $8 i32.const 1 i32.add - local.set $5 + local.set $8 br $for-loop|0 end end local.get $10 - local.get $0 + local.get $2 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity local.get $10 - 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 + local.get $6 local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $0 + local.tee $3 i32.store offset=8 loop $for-loop|4 local.get $10 i32.load offset=12 - local.get $1 + local.get $0 i32.gt_s if local.get $10 - local.get $1 + local.get $0 call $~lib/array/Array#__get - local.tee $2 + local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -7084,41 +7130,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.set $3 - local.get $4 - i32.load - local.get $4 - i32.load offset=4 - local.get $3 - local.get $3 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 local.tee $5 i32.const 1 @@ -7126,7 +7167,7 @@ if (result i32) i32.const 0 else - local.get $3 + local.get $1 i32.load16_u local.get $2 i32.const 65535 @@ -7137,14 +7178,16 @@ local.get $5 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -7154,19 +7197,19 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 local.get $10 - local.get $1 + local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|4 end end - local.get $0 + local.get $3 i32.load offset=20 local.get $4 i32.load offset=20 @@ -7180,9 +7223,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|6 - local.get $1 + local.get $0 i32.extend16_s i32.const 50 i32.lt_s @@ -7191,7 +7234,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7201,44 +7245,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load16_u local.get $1 i32.const 65535 @@ -7246,17 +7290,19 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -7267,13 +7313,14 @@ unreachable end local.get $4 - local.get $1 + local.get $0 call $~lib/set/Set#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7283,44 +7330,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load16_u local.get $1 i32.const 65535 @@ -7328,17 +7375,17 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 if i32.const 0 i32.const 1568 @@ -7347,10 +7394,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|6 end end @@ -7367,9 +7414,9 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|8 - local.get $1 + local.get $0 i32.extend16_s i32.const 50 i32.lt_s @@ -7378,7 +7425,8 @@ i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7388,44 +7436,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load16_u local.get $1 i32.const 65535 @@ -7433,17 +7481,17 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 if i32.const 0 i32.const 1568 @@ -7453,13 +7501,14 @@ unreachable end local.get $4 - local.get $1 + local.get $0 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7469,44 +7518,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load16_u local.get $1 i32.const 65535 @@ -7514,17 +7563,19 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -7535,13 +7586,14 @@ unreachable end local.get $4 - local.get $1 + local.get $0 call $~lib/set/Set#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $1 + local.get $0 + local.tee $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7551,44 +7603,44 @@ 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 + local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 + local.get $2 i32.load16_u local.get $1 i32.const 65535 @@ -7596,17 +7648,17 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $0 + local.get $3 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 if i32.const 0 i32.const 1568 @@ -7615,10 +7667,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|8 end end @@ -7748,23 +7800,23 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and @@ -7827,53 +7879,53 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $2 + local.get $1 if - local.get $2 - local.get $2 + local.get $1 i32.load offset=4 local.tee $4 i32.const 1 @@ -7881,24 +7933,25 @@ if (result i32) i32.const 0 else - local.get $2 - i32.load16_u local.get $1 + i32.load16_u + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end + local.get $1 i32.eqz if local.get $0 @@ -7932,7 +7985,7 @@ end local.get $0 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 local.get $0 i32.load offset=16 @@ -7943,10 +7996,10 @@ local.get $4 i32.const 3 i32.shl - local.get $2 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store16 local.get $0 local.get $0 @@ -7954,7 +8007,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 @@ -7968,7 +8021,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -7988,60 +8041,59 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 i32.shl i32.add - i32.load16_u - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -8058,7 +8110,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -8067,8 +8118,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -8151,7 +8203,7 @@ i32.store offset=8 local.get $3 call $~lib/set/Set#constructor - local.tee $10 + local.tee $4 i32.store loop $for-loop|1 local.get $1 @@ -8160,52 +8212,51 @@ i32.const 100 i32.lt_u if - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -8222,7 +8273,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $6 i32.const -2 i32.and @@ -8231,7 +8281,9 @@ end end i32.const 0 + local.set $5 end + local.get $5 if i32.const 0 i32.const 1568 @@ -8240,55 +8292,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $1 call $~lib/set/Set#add - block $__inlined_func$~lib/set/Set#find1 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -8305,7 +8356,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - drop local.get $6 i32.const -2 i32.and @@ -8314,7 +8364,11 @@ end end i32.const 0 + local.set $5 end + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8331,7 +8385,7 @@ br $for-loop|1 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -8352,52 +8406,51 @@ i32.const 100 i32.lt_u if - block $__inlined_func$~lib/set/Set#find4 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -8414,7 +8467,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - drop local.get $6 i32.const -2 i32.and @@ -8423,7 +8475,11 @@ end end i32.const 0 + local.set $5 end + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8433,55 +8489,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $1 call $~lib/set/Set#add - block $__inlined_func$~lib/set/Set#find7 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $1 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $5 - i32.const 15 - i32.shr_u - local.get $5 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $5 - i32.const 13 - i32.shr_u - local.get $5 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $5 - i32.const 16 - i32.shr_u - local.get $5 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 local.get $5 if - local.get $5 local.get $5 i32.load offset=4 local.tee $6 @@ -8498,7 +8553,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - drop local.get $6 i32.const -2 i32.and @@ -8507,7 +8561,11 @@ end end i32.const 0 + local.set $5 end + local.get $5 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8524,7 +8582,7 @@ br $for-loop|3 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -8537,8 +8595,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -8547,17 +8604,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $7 i32.const 0 i32.store - local.get $10 + local.get $4 i32.load offset=8 - local.set $6 - local.get $10 + local.set $5 + local.get $4 i32.load offset=16 - local.tee $7 - local.set $1 - local.get $8 + local.tee $3 + local.set $9 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -8566,28 +8623,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i32.const 16 i32.const 10 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store - local.get $9 + local.get $10 i32.const 0 i32.store offset=4 - local.get $9 + local.get $10 i32.const 0 i32.store offset=8 - local.get $9 + local.get $10 i32.const 0 i32.store offset=12 - local.get $1 + local.get $9 i32.const 536870910 i32.gt_u if @@ -8599,156 +8656,157 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $9 i32.const 8 - local.get $1 + local.get $9 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $3 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 local.get $11 - local.get $3 + local.get $1 call $~lib/memory/memory.fill - local.get $9 + local.get $10 local.get $11 i32.store local.get $11 if - local.get $9 + local.get $10 local.get $11 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $9 + local.get $10 local.get $11 i32.store offset=4 - local.get $9 - local.get $3 + local.get $10 + local.get $1 i32.store offset=8 + local.get $10 local.get $9 - local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 - local.get $9 + local.get $7 + local.get $10 i32.store loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s + local.get $3 + local.get $8 + i32.gt_s if - local.get $4 + local.get $8 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add - local.tee $1 + local.tee $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $9 - local.get $2 - local.get $1 - i32.load16_u - call $~lib/array/Array#__set local.get $2 + local.tee $1 i32.const 1 i32.add local.set $2 + local.get $10 + local.get $1 + local.get $7 + i32.load16_u + call $~lib/array/Array#__set end - local.get $4 + local.get $8 i32.const 1 i32.add - local.set $4 + local.set $8 br $for-loop|0 end end - local.get $9 + local.get $10 local.get $2 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $9 + local.get $10 local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $3 i32.store offset=8 loop $for-loop|4 - local.get $9 + local.get $10 i32.load offset=12 local.get $0 i32.gt_s if - local.get $9 + local.get $10 local.get $0 call $~lib/array/Array#__get local.set $2 - block $__inlined_func$~lib/set/Set#find10 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -8762,8 +8820,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - drop - local.get $4 + local.get $5 i32.const -2 i32.and local.set $1 @@ -8771,7 +8828,9 @@ end end i32.const 0 + local.set $1 end + local.get $1 i32.const 0 i32.ne i32.eqz @@ -8784,7 +8843,7 @@ unreachable end local.get $3 - local.get $9 + local.get $10 local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -8797,7 +8856,7 @@ end local.get $3 i32.load offset=20 - local.get $10 + local.get $4 i32.load offset=20 i32.ne if @@ -8817,52 +8876,51 @@ i32.const 50 i32.lt_u if - block $__inlined_func$~lib/set/Set#find13 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -8879,7 +8937,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - drop local.get $3 i32.const -2 i32.and @@ -8888,7 +8945,11 @@ end end i32.const 0 + local.set $2 end + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8898,55 +8959,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $0 call $~lib/set/Set#delete - block $__inlined_func$~lib/set/Set#find16 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -8963,7 +9023,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - drop local.get $3 i32.const -2 i32.and @@ -8972,7 +9031,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 if i32.const 0 i32.const 1568 @@ -8988,7 +9049,7 @@ br $for-loop|6 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -9009,52 +9070,51 @@ i32.const 50 i32.lt_u if - block $__inlined_func$~lib/set/Set#find19 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -9071,73 +9131,73 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - drop local.get $3 i32.const -2 - i32.and - local.set $2 - br $while-continue|020 - end - end - i32.const 0 - end - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $10 - local.get $0 - call $~lib/set/Set#add - block $__inlined_func$~lib/set/Set#find22 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load + i32.and + local.set $2 + br $while-continue|020 + end + end + i32.const 0 local.set $2 + end + local.get $2 + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $0 + call $~lib/set/Set#add + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -9154,7 +9214,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - drop local.get $3 i32.const -2 i32.and @@ -9163,7 +9222,11 @@ end end i32.const 0 + local.set $2 end + local.get $2 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -9173,55 +9236,54 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 local.get $0 call $~lib/set/Set#delete - block $__inlined_func$~lib/set/Set#find25 (result i32) - local.get $10 - i32.load - local.get $10 - i32.load offset=4 - local.get $0 - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $0 + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -9238,7 +9300,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - drop local.get $3 i32.const -2 i32.and @@ -9247,7 +9308,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 if i32.const 0 i32.const 1568 @@ -9263,7 +9326,7 @@ br $for-loop|8 end end - local.get $10 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -9275,9 +9338,9 @@ call $~lib/builtins/abort unreachable end - local.get $10 + local.get $4 call $~lib/set/Set#clear - local.get $10 + local.get $4 i32.load offset=20 if i32.const 0 @@ -9387,23 +9450,23 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and @@ -9466,51 +9529,51 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $2 + local.get $1 if - local.get $2 - local.get $2 + local.get $1 i32.load offset=4 local.tee $4 i32.const 1 @@ -9518,22 +9581,23 @@ if (result i32) i32.const 0 else - local.get $1 local.get $2 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end + local.get $1 i32.eqz if local.get $0 @@ -9567,7 +9631,7 @@ end local.get $0 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 local.get $0 i32.load offset=16 @@ -9578,10 +9642,10 @@ local.get $4 i32.const 3 i32.shl - local.get $2 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store local.get $0 local.get $0 @@ -9589,7 +9653,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 @@ -9603,7 +9667,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -9666,54 +9730,53 @@ i32.shl i32.add i32.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -9728,7 +9791,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -9737,8 +9799,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -9802,7 +9865,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -9824,7 +9886,7 @@ local.tee $4 i32.store loop $for-loop|0 - local.get $2 + local.get $0 i32.const 100 i32.lt_s if @@ -9832,7 +9894,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9878,7 +9940,7 @@ if (result i32) i32.const 0 else - local.get $2 + local.get $0 local.get $3 i32.load i32.eq @@ -9904,13 +9966,14 @@ unreachable end local.get $4 - local.get $2 + local.get $0 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9919,22 +9982,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -9943,12 +10006,12 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 local.tee $6 i32.const 1 @@ -9956,8 +10019,8 @@ if (result i32) i32.const 0 else - local.get $2 local.get $3 + local.get $0 i32.load i32.eq end @@ -9965,14 +10028,14 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -9982,10 +10045,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -10002,9 +10065,9 @@ unreachable end i32.const 50 - local.set $2 + local.set $0 loop $for-loop|1 - local.get $2 + local.get $0 i32.const 100 i32.lt_s if @@ -10012,7 +10075,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10058,7 +10121,7 @@ if (result i32) i32.const 0 else - local.get $2 + local.get $0 local.get $3 i32.load i32.eq @@ -10085,13 +10148,14 @@ unreachable end local.get $4 - local.get $2 + local.get $0 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10100,22 +10164,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -10124,12 +10188,12 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 local.tee $6 i32.const 1 @@ -10137,8 +10201,8 @@ if (result i32) i32.const 0 else - local.get $2 local.get $3 + local.get $0 i32.load i32.eq end @@ -10146,14 +10210,14 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -10163,10 +10227,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -10183,8 +10247,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -10193,17 +10256,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $8 i32.const 0 i32.store local.get $4 i32.load offset=8 - local.set $2 + local.set $3 local.get $4 i32.load offset=16 - local.tee $7 local.set $9 - local.get $6 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -10212,25 +10274,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $0 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $6 i32.store - local.get $10 + local.get $6 i32.const 0 i32.store - local.get $10 + local.get $6 i32.const 0 i32.store offset=4 - local.get $10 + local.get $6 i32.const 0 i32.store offset=8 - local.get $10 + local.get $6 i32.const 0 i32.store offset=12 local.get $9 @@ -10253,97 +10315,99 @@ select i32.const 2 i32.shl - local.tee $11 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $8 - local.get $11 - call $~lib/memory/memory.fill + local.get $0 local.get $10 - local.get $8 + call $~lib/memory/memory.fill + local.get $6 + local.get $0 i32.store - local.get $8 + local.get $0 if - local.get $10 - local.get $8 + local.get $6 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 - local.get $8 + local.get $6 + local.get $0 i32.store offset=4 + local.get $6 local.get $10 - local.get $11 i32.store offset=8 - local.get $10 + local.get $6 local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $8 local.get $6 - local.get $10 i32.store - loop $for-loop|01 + loop $for-loop|02 local.get $5 - local.get $7 + local.get $9 i32.lt_s if local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add - local.tee $6 + local.tee $8 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $10 - local.get $0 + local.get $2 + local.tee $0 + i32.const 1 + i32.add + local.set $2 local.get $6 + 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 $5 i32.const 1 i32.add local.set $5 - br $for-loop|01 + br $for-loop|02 end end - local.get $10 - local.get $0 + local.get $6 + local.get $2 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $10 - local.get $0 + local.get $6 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $10 + local.get $6 i32.load offset=12 local.get $1 i32.gt_s if - local.get $10 + local.get $6 local.get $1 call $~lib/array/Array#__get local.tee $2 @@ -10424,7 +10488,7 @@ unreachable end local.get $0 - local.get $10 + local.get $6 local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -10492,36 +10556,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $1 - local.get $3 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -10539,6 +10603,7 @@ local.get $4 i32.load offset=4 local.get $1 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10547,22 +10612,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -10571,36 +10636,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $0 local.get $1 - local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -10609,7 +10674,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add local.set $1 @@ -10672,36 +10737,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $1 - local.get $3 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 if i32.const 0 i32.const 1568 @@ -10750,36 +10815,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $1 - local.get $3 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -10797,6 +10862,7 @@ local.get $4 i32.load offset=4 local.get $1 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10805,22 +10871,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -10829,36 +10895,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $0 local.get $1 - local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -10867,7 +10933,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add local.set $1 @@ -10998,23 +11064,23 @@ i32.const 668265263 i32.mul local.tee $8 + local.get $8 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 + local.get $8 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 + local.get $8 i32.const 16 i32.shr_u - local.get $8 i32.xor local.get $1 i32.and @@ -11077,51 +11143,51 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $2 + local.get $1 if - local.get $2 - local.get $2 + local.get $1 i32.load offset=4 local.tee $4 i32.const 1 @@ -11129,22 +11195,23 @@ if (result i32) i32.const 0 else - local.get $1 local.get $2 + local.get $1 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 0 + local.set $1 end + local.get $1 i32.eqz if local.get $0 @@ -11178,7 +11245,7 @@ end local.get $0 i32.load offset=8 - local.set $2 + local.set $1 local.get $0 local.get $0 i32.load offset=16 @@ -11189,10 +11256,10 @@ local.get $4 i32.const 3 i32.shl - local.get $2 - i32.add - local.tee $2 local.get $1 + i32.add + local.tee $1 + local.get $2 i32.store local.get $0 local.get $0 @@ -11200,7 +11267,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $2 + local.get $1 local.get $0 i32.load local.get $0 @@ -11214,7 +11281,7 @@ i32.load i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store end ) @@ -11242,50 +11309,49 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $1 if - local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -11300,7 +11366,6 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -11309,8 +11374,9 @@ end end i32.const 0 + local.set $1 end - local.tee $1 + local.get $1 i32.eqz if return @@ -11374,7 +11440,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -11396,7 +11461,7 @@ local.tee $4 i32.store loop $for-loop|0 - local.get $2 + local.get $0 i32.const 100 i32.lt_u if @@ -11404,7 +11469,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11450,7 +11515,7 @@ if (result i32) i32.const 0 else - local.get $2 + local.get $0 local.get $3 i32.load i32.eq @@ -11476,13 +11541,14 @@ unreachable end local.get $4 - local.get $2 + local.get $0 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11491,22 +11557,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -11515,12 +11581,12 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 local.tee $6 i32.const 1 @@ -11528,8 +11594,8 @@ if (result i32) i32.const 0 else - local.get $2 local.get $3 + local.get $0 i32.load i32.eq end @@ -11537,14 +11603,14 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -11554,10 +11620,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -11574,9 +11640,9 @@ unreachable end i32.const 50 - local.set $2 + local.set $0 loop $for-loop|1 - local.get $2 + local.get $0 i32.const 100 i32.lt_u if @@ -11584,7 +11650,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11630,7 +11696,7 @@ if (result i32) i32.const 0 else - local.get $2 + local.get $0 local.get $3 i32.load i32.eq @@ -11657,13 +11723,14 @@ unreachable end local.get $4 - local.get $2 + local.get $0 call $~lib/set/Set#add local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $2 + local.get $0 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11672,22 +11739,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u i32.xor @@ -11696,12 +11763,12 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 local.tee $6 i32.const 1 @@ -11709,8 +11776,8 @@ if (result i32) i32.const 0 else - local.get $2 local.get $3 + local.get $0 i32.load i32.eq end @@ -11718,14 +11785,14 @@ local.get $6 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -11735,10 +11802,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -11755,8 +11822,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -11765,17 +11831,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $8 i32.const 0 i32.store local.get $4 i32.load offset=8 - local.set $2 + local.set $3 local.get $4 i32.load offset=16 - local.tee $7 local.set $9 - local.get $6 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -11784,25 +11849,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $0 i32.const 16 i32.const 14 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $6 i32.store - local.get $10 + local.get $6 i32.const 0 i32.store - local.get $10 + local.get $6 i32.const 0 i32.store offset=4 - local.get $10 + local.get $6 i32.const 0 i32.store offset=8 - local.get $10 + local.get $6 i32.const 0 i32.store offset=12 local.get $9 @@ -11825,97 +11890,99 @@ select i32.const 2 i32.shl - local.tee $11 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $0 i32.store offset=4 - local.get $8 - local.get $11 - call $~lib/memory/memory.fill + local.get $0 local.get $10 - local.get $8 + call $~lib/memory/memory.fill + local.get $6 + local.get $0 i32.store - local.get $8 + local.get $0 if - local.get $10 - local.get $8 + local.get $6 + local.get $0 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 - local.get $8 + local.get $6 + local.get $0 i32.store offset=4 + local.get $6 local.get $10 - local.get $11 i32.store offset=8 - local.get $10 + local.get $6 local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $8 local.get $6 - local.get $10 i32.store - loop $for-loop|01 + loop $for-loop|02 local.get $5 - local.get $7 + local.get $9 i32.lt_s if local.get $5 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add - local.tee $6 + local.tee $8 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $10 - local.get $0 + local.get $2 + local.tee $0 + i32.const 1 + i32.add + local.set $2 local.get $6 + 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 $5 i32.const 1 i32.add local.set $5 - br $for-loop|01 + br $for-loop|02 end end - local.get $10 - local.get $0 + local.get $6 + local.get $2 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $10 - local.get $0 + local.get $6 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $10 + local.get $6 i32.load offset=12 local.get $1 i32.gt_s if - local.get $10 + local.get $6 local.get $1 call $~lib/array/Array#__get local.tee $2 @@ -11996,7 +12063,7 @@ unreachable end local.get $0 - local.get $10 + local.get $6 local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add @@ -12064,36 +12131,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $1 - local.get $3 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -12111,6 +12178,7 @@ local.get $4 i32.load offset=4 local.get $1 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12119,22 +12187,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -12143,36 +12211,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $0 local.get $1 - local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|017 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -12181,7 +12249,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add local.set $1 @@ -12244,36 +12312,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $1 - local.get $3 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|020 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 if i32.const 0 i32.const 1568 @@ -12322,36 +12390,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $0 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $3 + local.get $0 if - local.get $3 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $1 - local.get $3 + local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $0 br $while-continue|023 end end i32.const 0 - local.set $3 + local.set $0 end - local.get $3 + local.get $0 i32.eqz if i32.const 0 @@ -12369,6 +12437,7 @@ local.get $4 i32.load offset=4 local.get $1 + local.tee $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12377,22 +12446,22 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor @@ -12401,36 +12470,36 @@ i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $0 local.get $1 - local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|026 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 if i32.const 0 i32.const 1568 @@ -12439,7 +12508,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add local.set $1 @@ -12485,61 +12554,60 @@ ) (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -12554,7 +12622,6 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $2 i32.const -2 i32.and @@ -12563,7 +12630,9 @@ end end i32.const 0 + local.set $0 end + local.get $0 i32.const 0 i32.ne ) @@ -12746,62 +12815,61 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=8 local.tee $4 @@ -12816,7 +12884,6 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and @@ -12825,7 +12892,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 i32.eqz if local.get $0 @@ -12962,61 +13031,60 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -13031,7 +13099,6 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -13040,8 +13107,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -13132,7 +13200,7 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13140,7 +13208,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) (local $11 i32) (local $12 i32) @@ -13154,23 +13222,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor - local.tee $11 + local.tee $2 i32.store loop $for-loop|0 - local.get $1 + local.get $9 i64.const 100 i64.lt_s if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13180,11 +13248,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13195,14 +13263,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|0 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -13215,14 +13283,14 @@ unreachable end i64.const 50 - local.set $1 + local.set $9 loop $for-loop|1 - local.get $1 + local.get $9 i64.const 100 i64.lt_s if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13233,11 +13301,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13248,14 +13316,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|1 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -13268,8 +13336,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -13278,17 +13345,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $6 i32.const 0 i32.store - local.get $11 + local.get $2 i32.load offset=8 - local.set $7 - local.get $11 + local.set $4 + local.get $2 i32.load offset=16 - local.tee $8 - local.set $2 - local.get $9 + local.tee $3 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -13297,28 +13364,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $1 i64.const 0 i64.store - local.get $5 + local.get $1 i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $11 i32.store - local.get $10 + local.get $11 i32.const 0 i32.store - local.get $10 + local.get $11 i32.const 0 i32.store offset=4 - local.get $10 + local.get $11 i32.const 0 i32.store offset=8 - local.get $10 + local.get $11 i32.const 0 i32.store offset=12 - local.get $2 + local.get $10 i32.const 134217727 i32.gt_u if @@ -13330,107 +13397,109 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $10 i32.const 8 - local.get $2 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $5 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $12 i32.store offset=4 local.get $12 - local.get $5 + local.get $1 call $~lib/memory/memory.fill - local.get $10 + local.get $11 local.get $12 i32.store local.get $12 if - local.get $10 + local.get $11 local.get $12 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $11 local.get $12 i32.store offset=4 - local.get $10 - local.get $5 + local.get $11 + local.get $1 i32.store offset=8 + local.get $11 local.get $10 - local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 - local.get $10 + local.get $6 + local.get $11 i32.store - loop $for-loop|01 - local.get $4 - local.get $8 - i32.lt_s + loop $for-loop|02 + local.get $3 + local.get $7 + i32.gt_s if - local.get $4 + local.get $7 i32.const 4 i32.shl - local.get $7 + local.get $4 i32.add - local.tee $2 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $10 - local.get $0 - local.get $2 - i64.load - call $~lib/array/Array#__set local.get $0 + local.tee $1 i32.const 1 i32.add local.set $0 + local.get $11 + local.get $1 + local.get $6 + i64.load + call $~lib/array/Array#__set end - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 - br $for-loop|01 + local.set $7 + br $for-loop|02 end end - local.get $10 + local.get $11 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $10 + local.get $11 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $5 + local.get $11 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $10 + local.get $11 i32.load offset=12 - local.get $3 + local.get $8 i32.gt_s if + local.get $2 local.get $11 - local.get $10 - local.get $3 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -13443,20 +13512,20 @@ unreachable end local.get $0 - local.get $10 - local.get $3 + local.get $11 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $8 i32.const 1 i32.add - local.set $3 + local.set $8 br $for-loop|2 end end local.get $0 i32.load offset=20 - local.get $11 + local.get $2 i32.load offset=20 i32.ne if @@ -13468,14 +13537,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $9 loop $for-loop|3 - local.get $1 + local.get $9 i64.const 50 i64.lt_s if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13486,11 +13555,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13500,14 +13569,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|3 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -13520,14 +13589,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $9 loop $for-loop|4 - local.get $1 + local.get $9 i64.const 50 i64.lt_s if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13537,11 +13606,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -13552,11 +13621,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -13566,14 +13635,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|4 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -13585,9 +13654,9 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $2 call $~lib/set/Set#clear - local.get $11 + local.get $2 i32.load offset=20 if i32.const 0 @@ -13612,61 +13681,60 @@ ) (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -13681,7 +13749,6 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $2 i32.const -2 i32.and @@ -13690,7 +13757,9 @@ end end i32.const 0 + local.set $0 end + local.get $0 i32.const 0 i32.ne ) @@ -13862,73 +13931,72 @@ 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.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl 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) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=8 local.tee $4 @@ -13943,7 +14011,6 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and @@ -13952,7 +14019,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 i32.eqz if local.get $0 @@ -14050,61 +14119,60 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -14119,7 +14187,6 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -14128,8 +14195,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -14183,7 +14251,7 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14191,7 +14259,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) (local $11 i32) (local $12 i32) @@ -14205,23 +14273,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 call $~lib/set/Set#constructor - local.tee $11 + local.tee $2 i32.store loop $for-loop|0 - local.get $1 + local.get $9 i64.const 100 i64.lt_u if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14231,11 +14299,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14246,14 +14314,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|0 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -14266,14 +14334,14 @@ unreachable end i64.const 50 - local.set $1 + local.set $9 loop $for-loop|1 - local.get $1 + local.get $9 i64.const 100 i64.lt_u if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14284,11 +14352,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14299,14 +14367,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|1 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -14319,8 +14387,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14329,17 +14396,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $6 i32.const 0 i32.store - local.get $11 + local.get $2 i32.load offset=8 - local.set $7 - local.get $11 + local.set $4 + local.get $2 i32.load offset=16 - local.tee $8 - local.set $2 - local.get $9 + local.tee $3 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -14348,28 +14415,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $1 i64.const 0 i64.store - local.get $5 + local.get $1 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $11 i32.store - local.get $10 + local.get $11 i32.const 0 i32.store - local.get $10 + local.get $11 i32.const 0 i32.store offset=4 - local.get $10 + local.get $11 i32.const 0 i32.store offset=8 - local.get $10 + local.get $11 i32.const 0 i32.store offset=12 - local.get $2 + local.get $10 i32.const 134217727 i32.gt_u if @@ -14381,107 +14448,109 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $10 i32.const 8 - local.get $2 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $5 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $12 i32.store offset=4 local.get $12 - local.get $5 + local.get $1 call $~lib/memory/memory.fill - local.get $10 + local.get $11 local.get $12 i32.store local.get $12 if - local.get $10 + local.get $11 local.get $12 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $11 local.get $12 i32.store offset=4 - local.get $10 - local.get $5 + local.get $11 + local.get $1 i32.store offset=8 + local.get $11 local.get $10 - local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 - local.get $10 + local.get $6 + local.get $11 i32.store - loop $for-loop|01 - local.get $4 - local.get $8 - i32.lt_s + loop $for-loop|02 + local.get $3 + local.get $7 + i32.gt_s if - local.get $4 + local.get $7 i32.const 4 i32.shl - local.get $7 + local.get $4 i32.add - local.tee $2 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $10 - local.get $0 - local.get $2 - i64.load - call $~lib/array/Array#__set local.get $0 + local.tee $1 i32.const 1 i32.add local.set $0 + local.get $11 + local.get $1 + local.get $6 + i64.load + call $~lib/array/Array#__set end - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 - br $for-loop|01 + local.set $7 + br $for-loop|02 end end - local.get $10 + local.get $11 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $10 + local.get $11 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $5 + local.get $11 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $10 + local.get $11 i32.load offset=12 - local.get $3 + local.get $8 i32.gt_s if + local.get $2 local.get $11 - local.get $10 - local.get $3 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -14494,20 +14563,20 @@ unreachable end local.get $0 - local.get $10 - local.get $3 + local.get $11 + local.get $8 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $8 i32.const 1 i32.add - local.set $3 + local.set $8 br $for-loop|2 end end local.get $0 i32.load offset=20 - local.get $11 + local.get $2 i32.load offset=20 i32.ne if @@ -14519,14 +14588,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $9 loop $for-loop|3 - local.get $1 + local.get $9 i64.const 50 i64.lt_u if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14537,11 +14606,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14551,14 +14620,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|3 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -14571,14 +14640,14 @@ unreachable end i64.const 0 - local.set $1 + local.set $9 loop $for-loop|4 - local.get $1 + local.get $9 i64.const 50 i64.lt_u if - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14588,11 +14657,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#add - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has i32.eqz if @@ -14603,11 +14672,11 @@ call $~lib/builtins/abort unreachable end - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#delete - local.get $11 - local.get $1 + local.get $2 + local.get $9 call $~lib/set/Set#has if i32.const 0 @@ -14617,14 +14686,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i64.const 1 i64.add - local.set $1 + local.set $9 br $for-loop|4 end end - local.get $11 + local.get $2 i32.load offset=20 i32.const 50 i32.ne @@ -14636,9 +14705,9 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $2 call $~lib/set/Set#clear - local.get $11 + local.get $2 i32.load offset=20 if i32.const 0 @@ -14750,23 +14819,23 @@ i32.const 668265263 i32.mul local.tee $9 + local.get $9 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 + local.get $9 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 + local.get $9 i32.const 16 i32.shr_u - local.get $9 i32.xor local.get $1 i32.and @@ -14829,51 +14898,50 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $4 @@ -14888,7 +14956,6 @@ f32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and @@ -14897,7 +14964,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 i32.eqz if local.get $0 @@ -14995,50 +15064,49 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -15053,7 +15121,6 @@ f32.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -15062,8 +15129,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -15128,7 +15196,6 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -15147,16 +15214,16 @@ i32.store offset=8 local.get $0 call $~lib/set/Set#constructor - local.tee $12 + local.tee $11 i32.store loop $for-loop|0 local.get $2 f32.const 100 f32.lt if - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15230,12 +15297,12 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $11 local.get $2 call $~lib/set/Set#add - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15317,7 +15384,7 @@ br $for-loop|0 end end - local.get $12 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -15336,9 +15403,9 @@ f32.const 100 f32.lt if - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15413,12 +15480,12 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $11 local.get $2 call $~lib/set/Set#add - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15500,7 +15567,7 @@ br $for-loop|1 end end - local.get $12 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -15513,8 +15580,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $0 + local.tee $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -15523,17 +15589,16 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $3 i32.const 0 i32.store - local.get $12 + local.get $11 i32.load offset=8 local.set $8 - local.get $12 + local.get $11 i32.load offset=16 - local.tee $6 - local.set $3 - local.get $7 + local.set $7 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -15549,21 +15614,21 @@ i32.const 16 i32.const 20 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.store - local.get $4 + local.get $6 i32.const 0 i32.store offset=4 - local.get $4 + local.get $6 i32.const 0 i32.store offset=8 - local.get $4 + local.get $6 i32.const 0 i32.store offset=12 - local.get $3 + local.get $7 i32.const 268435455 i32.gt_u if @@ -15575,9 +15640,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 8 - local.get $3 + local.get $7 i32.const 8 i32.gt_u select @@ -15591,33 +15656,33 @@ local.get $5 local.get $0 call $~lib/memory/memory.fill - local.get $4 + local.get $6 local.get $5 i32.store local.get $5 if - local.get $4 + local.get $6 local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $6 local.get $5 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 i32.store offset=8 - local.get $4 - local.get $3 + local.get $6 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $4 + local.get $3 + local.get $6 i32.store - loop $for-loop|01 - local.get $6 + loop $for-loop|02 + local.get $7 local.get $10 i32.gt_s if @@ -15626,21 +15691,21 @@ i32.shl local.get $8 i32.add - local.tee $3 + local.tee $0 i32.load offset=4 i32.const 1 i32.and i32.eqz if + local.get $0 + f32.load + local.set $2 local.get $1 local.tee $0 i32.const 1 i32.add local.set $1 - local.get $3 - f32.load - local.set $2 - local.get $4 + local.get $6 i32.load offset=12 local.get $0 i32.le_u @@ -15656,7 +15721,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 local.get $0 i32.const 1 i32.add @@ -15664,11 +15729,11 @@ i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $4 + local.get $6 local.get $3 i32.store offset=12 end - local.get $4 + local.get $6 i32.load offset=4 local.get $0 i32.const 2 @@ -15681,15 +15746,15 @@ i32.const 1 i32.add local.set $10 - br $for-loop|01 + br $for-loop|02 end end - local.get $4 + local.get $6 local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $4 + local.get $6 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -15697,19 +15762,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $4 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $3 i32.store offset=8 loop $for-loop|2 - local.get $4 + local.get $6 i32.load offset=12 - local.get $11 + local.get $9 i32.gt_s if - local.get $4 - local.get $11 + local.get $6 + local.get $9 call $~lib/array/Array#__get local.tee $2 i32.reinterpret_f32 @@ -15736,9 +15802,9 @@ i32.const -1028477379 i32.mul local.set $0 - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $0 local.get $0 @@ -15750,12 +15816,12 @@ i32.shl i32.add i32.load - local.set $3 + local.set $1 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $3 + local.get $1 if - local.get $3 + local.get $1 i32.load offset=4 local.tee $0 i32.const 1 @@ -15764,7 +15830,7 @@ i32.const 0 else local.get $2 - local.get $3 + local.get $1 f32.load f32.eq end @@ -15772,14 +15838,14 @@ local.get $0 i32.const -2 i32.and - local.set $3 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $1 end - local.get $3 + local.get $1 i32.eqz if i32.const 0 @@ -15789,21 +15855,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.get $4 - local.get $11 + local.get $3 + local.get $6 + local.get $9 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $11 + local.get $9 i32.const 1 i32.add - local.set $11 + local.set $9 br $for-loop|2 end end - local.get $1 + local.get $3 i32.load offset=20 - local.get $12 + local.get $11 i32.load offset=20 i32.ne if @@ -15821,9 +15887,9 @@ f32.const 50 f32.lt if - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15898,12 +15964,12 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $11 local.get $2 call $~lib/set/Set#delete - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15984,7 +16050,7 @@ br $for-loop|3 end end - local.get $12 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -16003,9 +16069,9 @@ f32.const 50 f32.lt if - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16079,12 +16145,12 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $11 local.get $2 call $~lib/set/Set#add - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16159,12 +16225,12 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $11 local.get $2 call $~lib/set/Set#delete - local.get $12 + local.get $11 i32.load - local.get $12 + local.get $11 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16245,7 +16311,7 @@ br $for-loop|4 end end - local.get $12 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -16257,9 +16323,9 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $11 call $~lib/set/Set#clear - local.get $12 + local.get $11 i32.load offset=20 if i32.const 0 @@ -16285,63 +16351,62 @@ (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $0 if - local.get $0 local.get $0 i32.load offset=8 local.tee $3 @@ -16356,7 +16421,6 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $3 i32.const -2 i32.and @@ -16365,7 +16429,9 @@ end end i32.const 0 + local.set $0 end + local.get $0 i32.const 0 i32.ne ) @@ -16552,64 +16618,63 @@ (local $3 i64) (local $4 i32) (local $5 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + local.get $0 + i32.load + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=8 local.tee $5 @@ -16624,7 +16689,6 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $5 i32.const -2 i32.and @@ -16633,7 +16697,9 @@ end end i32.const 0 + local.set $2 end + local.get $2 i32.eqz if local.get $0 @@ -16726,69 +16792,68 @@ i32.const 3 i32.shl i32.add - f64.load - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - block $__inlined_func$~lib/set/Set#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - 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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 + f64.load + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + 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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + block $__inlined_func$~lib/set/Set#find loop $while-continue|0 local.get $2 if - local.get $2 local.get $2 i32.load offset=8 local.tee $4 @@ -16803,7 +16868,6 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - drop local.get $4 i32.const -2 i32.and @@ -16812,8 +16876,9 @@ end end i32.const 0 + local.set $2 end - local.tee $2 + local.get $2 i32.eqz if return @@ -16869,8 +16934,8 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 i32) + (local $3 i32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) @@ -16889,23 +16954,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 call $~lib/set/Set#constructor - local.tee $12 + local.tee $3 i32.store loop $for-loop|0 - local.get $3 + local.get $4 f64.const 100 f64.lt if - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -16915,11 +16980,11 @@ call $~lib/builtins/abort unreachable end - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#add - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -16930,14 +16995,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $12 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -16950,14 +17015,14 @@ unreachable end f64.const 50 - local.set $3 + local.set $4 loop $for-loop|1 - local.get $3 + local.get $4 f64.const 100 f64.lt if - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -16968,11 +17033,11 @@ call $~lib/builtins/abort unreachable end - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#add - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -16983,14 +17048,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|1 end end - local.get $12 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -17003,8 +17068,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $0 + local.tee $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17013,17 +17077,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $8 i32.const 0 i32.store - local.get $12 + local.get $3 i32.load offset=8 - local.set $8 - local.get $12 + local.set $6 + local.get $3 i32.load offset=16 - local.tee $7 - local.set $2 - local.get $6 + local.tee $5 + local.set $11 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -17032,28 +17096,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 22 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $2 i32.store - local.get $5 + local.get $2 i32.const 0 i32.store - local.get $5 + local.get $2 i32.const 0 i32.store offset=4 - local.get $5 + local.get $2 i32.const 0 i32.store offset=8 - local.get $5 + local.get $2 i32.const 0 i32.store offset=12 - local.get $2 + local.get $11 i32.const 134217727 i32.gt_u if @@ -17065,77 +17129,77 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $11 i32.const 8 - local.get $2 + local.get $11 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $0 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $12 i32.store offset=4 - local.get $4 - local.get $0 + local.get $12 + local.get $1 call $~lib/memory/memory.fill - local.get $5 - local.get $4 + local.get $2 + local.get $12 i32.store - local.get $4 + local.get $12 if - local.get $5 - local.get $4 + local.get $2 + local.get $12 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $5 - local.get $4 + local.get $2 + local.get $12 i32.store offset=4 - local.get $5 - local.get $0 + local.get $2 + local.get $1 i32.store offset=8 - local.get $5 local.get $2 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $5 + local.get $8 + local.get $2 i32.store - loop $for-loop|01 - local.get $7 - local.get $10 + loop $for-loop|02 + local.get $5 + local.get $9 i32.gt_s if - local.get $10 + local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $6 i32.add - local.tee $2 + local.tee $1 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $1 - local.tee $0 + f64.load + local.set $4 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $1 + local.set $0 local.get $2 - f64.load - local.set $3 - local.get $5 i32.load offset=12 - local.get $0 + local.get $1 i32.le_u if - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -17146,61 +17210,62 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $0 + local.get $2 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $8 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $5 local.get $2 + local.get $8 i32.store offset=12 end - local.get $5 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add - local.get $3 + local.get $4 f64.store end - local.get $10 + local.get $9 i32.const 1 i32.add - local.set $10 - br $for-loop|01 + local.set $9 + br $for-loop|02 end end - local.get $5 - local.get $1 + local.get $2 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $5 - local.get $1 + local.get $2 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $7 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $5 + local.get $2 i32.load offset=12 - local.get $11 + local.get $10 i32.gt_s if - local.get $12 - local.get $5 - local.get $11 + local.get $3 + local.get $2 + local.get $10 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -17213,20 +17278,20 @@ unreachable end local.get $0 - local.get $5 - local.get $11 + local.get $2 + local.get $10 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $11 + local.get $10 i32.const 1 i32.add - local.set $11 + local.set $10 br $for-loop|2 end end local.get $0 i32.load offset=20 - local.get $12 + local.get $3 i32.load offset=20 i32.ne if @@ -17238,14 +17303,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $4 loop $for-loop|3 - local.get $3 + local.get $4 f64.const 50 f64.lt if - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -17256,11 +17321,11 @@ call $~lib/builtins/abort unreachable end - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#delete - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -17270,14 +17335,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -17290,14 +17355,14 @@ unreachable end f64.const 0 - local.set $3 + local.set $4 loop $for-loop|4 - local.get $3 + local.get $4 f64.const 50 f64.lt if - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -17307,11 +17372,11 @@ call $~lib/builtins/abort unreachable end - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#add - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has i32.eqz if @@ -17322,11 +17387,11 @@ call $~lib/builtins/abort unreachable end - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#delete - local.get $12 local.get $3 + local.get $4 call $~lib/set/Set#has if i32.const 0 @@ -17336,14 +17401,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 f64.const 1 f64.add - local.set $3 + local.set $4 br $for-loop|4 end end - local.get $12 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -17355,9 +17420,9 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $3 call $~lib/set/Set#clear - local.get $12 + local.get $3 i32.load offset=20 if i32.const 0 diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index c973a59401..55a6d361fc 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -240,19 +240,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -864,38 +862,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18396 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -911,221 +982,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18396 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1696 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18396 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 1696 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18396 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18396 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1904 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2122,7 +2118,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $6 + local.tee $5 i32.load i32.const -4 i32.and @@ -2131,17 +2127,16 @@ local.get $1 i32.ge_u if - local.get $6 + local.get $5 local.get $1 i32.store offset=16 local.get $0 return end - local.get $6 + local.get $5 i32.load offset=12 - local.set $3 + local.set $6 local.get $1 - local.tee $2 i32.const 1073741804 i32.ge_u if @@ -2158,12 +2153,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $1 + local.set $2 loop $do-loop|0 - local.get $1 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $1 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -2179,14 +2174,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2203,11 +2198,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $7 - local.get $2 + local.set $3 + local.get $1 i32.const 16 i32.add - local.tee $4 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -2218,29 +2213,30 @@ call $~lib/builtins/abort unreachable end + local.get $3 i32.const 12 - local.get $4 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $4 + local.get $2 i32.const 12 i32.le_u select - local.tee $4 + local.tee $7 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if memory.size - local.tee $1 + local.tee $2 i32.const 4 - local.get $7 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $2 i32.const 16 i32.shl i32.const 4 @@ -2249,16 +2245,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $4 + local.get $7 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $4 + local.get $7 i32.add - local.get $4 - local.get $4 + local.get $7 + local.get $7 i32.const 536870910 i32.lt_u select @@ -2269,16 +2265,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $1 - local.get $5 + local.tee $4 + local.get $2 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -2286,18 +2282,18 @@ unreachable end end - local.get $7 - local.get $1 + local.get $3 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $3 local.get $7 - local.get $4 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -2308,11 +2304,11 @@ unreachable end end - local.get $1 + local.get $2 i32.load i32.const -4 i32.and - local.get $4 + local.get $7 i32.lt_u if i32.const 0 @@ -2322,13 +2318,13 @@ call $~lib/builtins/abort unreachable end - local.get $7 - local.get $1 + local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $2 i32.load - local.set $8 - local.get $4 + local.set $4 + local.get $7 i32.const 4 i32.add i32.const 15 @@ -2341,74 +2337,74 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $4 i32.const -4 i32.and - local.get $4 + local.get $7 i32.sub - local.tee $5 + local.tee $8 i32.const 16 i32.ge_u if - local.get $1 - local.get $8 + local.get $2 + local.get $4 i32.const 2 i32.and - local.get $4 + local.get $7 i32.or i32.store - local.get $4 - local.get $1 + local.get $7 + local.get $2 i32.const 4 i32.add i32.add local.tee $4 - local.get $5 + local.get $8 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $7 + local.get $3 local.get $4 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $8 + local.get $2 + local.get $4 i32.const -2 i32.and 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.get $4 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $1 - local.get $3 + local.get $2 + local.get $6 i32.store offset=12 - local.get $1 local.get $2 + local.get $1 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $4 - local.get $1 - local.get $3 + local.get $2 global.get $~lib/rt/itcms/white + local.get $3 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $4 i32.store offset=8 local.get $4 @@ -2416,14 +2412,14 @@ i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $2 i32.or i32.store offset=4 local.get $3 - local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.load i32.const -4 i32.and @@ -2431,19 +2427,19 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 i32.const 20 i32.add local.tee $4 - local.get $2 + local.get $1 call $~lib/memory/memory.fill - local.get $2 - local.get $6 + local.get $1 + local.get $5 i32.load offset=16 - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.gt_u + i32.lt_u select local.set $5 block $~lib/util/memory/memmove|inlined.0 @@ -2640,7 +2636,7 @@ (local $4 i32) local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 local.get $1 i32.shr_u i32.eqz @@ -2657,11 +2653,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 local.get $0 i32.load - local.tee $2 - local.get $3 + local.tee $3 + local.get $2 i32.const 1 i32.shl local.tee $4 @@ -2682,12 +2677,13 @@ local.tee $1 call $~lib/rt/itcms/__renew local.tee $4 + local.get $2 i32.add local.get $1 - local.get $3 + local.get $2 i32.sub call $~lib/memory/memory.fill - local.get $2 + local.get $3 local.get $4 i32.ne if diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index d28683e09a..c0f49c33a3 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -375,19 +375,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -1049,38 +1047,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 20252 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1096,177 +1167,102 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 20252 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1408 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20252 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 1408 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 20252 - 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 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1398,7 +1394,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -1410,6 +1405,7 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -1519,7 +1515,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -1533,17 +1529,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -1554,19 +1550,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store @@ -1839,26 +1835,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 - local.get $3 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -2751,6 +2747,22 @@ end end ) + (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $2 + i32.store + local.get $2 + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=12 @@ -2776,6 +2788,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -2810,47 +2823,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -2861,17 +2874,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -2884,31 +2896,33 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf (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 3868 - i32.lt_s - if - i32.const 20272 - i32.const 20320 - i32.const 1 - i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + if + i32.const 20272 + i32.const 20320 + 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/staticarray/StaticArray<~lib/string/String>#indexOf local.get $2 local.get $0 i32.const 20 @@ -2927,6 +2941,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 + local.set $2 br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf end local.get $2 @@ -2966,7 +2981,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf end local.get $2 @@ -2981,302 +2995,86 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 + local.set $2 end + local.get $2 i32.const 0 i32.ge_s ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (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) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - block $__inlined_func$~lib/util/string/joinStringArray (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3868 - i32.lt_s - if - i32.const 20272 - i32.const 20320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2768 - br $__inlined_func$~lib/util/string/joinStringArray - end - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $1 - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 2768 - local.get $0 - select - br $__inlined_func$~lib/util/string/joinStringArray - end - loop $for-loop|0 - local.get $4 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 - if - local.get $7 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - 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 - global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $6 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=8 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 - if - local.get $3 - i32.const 1 - i32.shl - local.get $5 - 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 - call $~lib/memory/memory.copy - local.get $3 - local.get $7 - i32.add - local.set $3 - end - local.get $2 - if - local.get $3 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $1 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $3 - i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if - local.get $3 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - 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) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 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 - local.get $1 - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s + (local $8 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 + local.get $1 + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s if local.get $7 i32.const 2 @@ -4099,16 +3897,26 @@ block $~lib/staticarray/StaticArray block $std/staticarray/Ref block $~lib/staticarray/StaticArray - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -4191,13 +3999,21 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f64) - (local $12 f32) + (local $11 i32) + (local $12 i32) (local $13 i32) (local $14 i32) (local $15 i32) - (local $16 i32) - (local $17 i32) + (local $16 f32) + (local $17 f64) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -4208,19 +4024,19 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i64.const 0 i64.store offset=8 - local.get $2 + local.get $3 i64.const 0 i64.store offset=16 - local.get $2 + local.get $3 i64.const 0 i64.store offset=24 - local.get $2 + local.get $3 i32.const 1056 i32.store i32.const 1056 @@ -4377,17 +4193,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $2 + local.get $3 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4402,9 +4218,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4419,9 +4235,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4436,9 +4252,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -4456,16 +4272,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4481,17 +4297,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $2 + local.get $3 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4511,27 +4327,13 @@ local.tee $3 i32.store offset=4 local.get $3 + i32.const 0 call $std/staticarray/Ref#constructor - local.tee $2 - i32.store - local.get $2 - if - local.get $3 - local.get $2 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end + call $~lib/staticarray/StaticArray#__uset local.get $3 + i32.const 1 call $std/staticarray/Ref#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - if - local.get $3 - local.get $2 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end + call $~lib/staticarray/StaticArray#__uset local.get $3 global.set $std/staticarray/arr4 i32.const 0 @@ -4539,8 +4341,7 @@ i32.const 0 global.set $std/staticarray/arr4 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4549,25 +4350,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 12 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -4584,17 +4385,17 @@ unreachable end loop $for-loop|0 - local.get $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $2 i32.gt_s if + local.get $3 local.get $2 - local.get $1 call $~lib/staticarray/StaticArray#__get if i32.const 0 @@ -4604,10 +4405,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end @@ -4616,16 +4417,16 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 call $~lib/staticarray/StaticArray.fromArray - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=12 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4641,16 +4442,16 @@ unreachable end loop $for-loop|1 - local.get $2 + local.get $3 i32.load offset=12 - local.get $0 + local.get $6 i32.gt_s if - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#__get local.get $2 - local.get $0 + local.get $6 + call $~lib/staticarray/StaticArray#__get + local.get $3 + local.get $6 call $~lib/array/Array#__get i32.ne if @@ -4661,10 +4462,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 i32.const 1 i32.add - local.set $0 + local.set $6 br $for-loop|1 end end @@ -4673,15 +4474,15 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - local.get $0 + local.get $2 call $~lib/staticarray/StaticArray.fromArray - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4699,29 +4500,29 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $5 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $2 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.const 1888 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 + local.get $5 local.get $2 - local.get $0 call $~lib/staticarray/StaticArray.concat - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4741,25 +4542,25 @@ i32.const 0 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.const 1920 i32.const 0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 + local.get $5 local.get $2 - local.get $0 call $~lib/staticarray/StaticArray.concat - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $2 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -4778,26 +4579,26 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $7 i32.const 2128 i32.const 20 call $~lib/memory/memory.copy - local.get $4 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $3 + local.tee $6 i32.store offset=4 - local.get $3 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $4 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4813,33 +4614,33 @@ unreachable end i32.const 0 - local.set $1 + local.set $2 loop $for-loop|2 - local.get $4 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $2 i32.gt_s if - local.get $4 - local.get $1 + local.get $7 + local.get $2 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $2 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store - local.get $3 - local.get $1 + local.get $6 + local.get $2 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=12 - local.get $2 - local.get $0 + local.get $5 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -4850,21 +4651,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $5 i32.store offset=4 - local.get $2 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -4880,18 +4681,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 + local.tee $2 + local.get $3 i32.store - local.get $0 + local.get $2 i32.const 1984 i32.store offset=12 - local.get $1 + local.get $3 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -4903,18 +4704,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $5 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 + local.tee $2 + local.get $3 i32.store - local.get $0 + local.get $2 i32.const 2016 i32.store offset=12 - local.get $1 + local.get $3 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -4927,13 +4728,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $4 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4941,7 +4742,7 @@ i32.shr_u i32.const 1 i32.sub - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4957,19 +4758,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $4 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4985,13 +4786,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 100 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5006,13 +4807,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const -1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5028,18 +4829,18 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 + local.tee $2 + local.get $3 i32.store - local.get $0 + local.get $2 i32.const 2080 i32.store offset=12 - local.get $1 + local.get $3 i32.const 2080 call $~lib/string/String.__eq i32.eqz @@ -5052,13 +4853,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5073,13 +4874,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5095,18 +4896,18 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 + local.tee $2 + local.get $3 i32.store - local.get $0 + local.get $2 i32.const 2016 i32.store offset=12 - local.get $1 + local.get $3 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5122,29 +4923,29 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $5 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $2 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 9 i32.const 2352 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 + local.get $5 local.get $2 - local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $0 + local.tee $2 i32.store offset=16 - local.get $0 - i32.load offset=12 local.get $2 + i32.load offset=12 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -5164,18 +4965,18 @@ i32.const 9 i32.const 2416 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 + local.get $5 local.get $2 - local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $0 + local.tee $2 i32.store offset=16 - local.get $0 - i32.load offset=12 local.get $2 + i32.load offset=12 + local.get $5 i32.const 20 i32.sub i32.load offset=16 @@ -5196,16 +4997,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $0 + local.get $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $0 + local.get $2 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5222,7 +5023,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $0 + local.get $2 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5237,7 +5038,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $0 + local.get $2 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5252,7 +5053,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $0 + local.get $2 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5266,47 +5067,45 @@ call $~lib/builtins/abort unreachable end - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $2 - i32.const 2496 - i32.const 8 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 2496 + i32.const 8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store i32.const 0 - local.set $0 - i32.const 0 - local.get $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 3 i32.shr_u - local.tee $1 + local.tee $2 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 local.get $0 - local.get $1 + local.get $2 i32.lt_s if i32.const 1 local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add f64.load - local.tee $11 + local.tee $17 f64.const nan:0x8000000000000 f64.eq - local.get $11 - local.get $11 + local.get $17 + local.get $17 f64.ne i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes @@ -5329,19 +5128,17 @@ call $~lib/builtins/abort unreachable end - i32.const 4 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $2 - i32.const 2528 - i32.const 4 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) - i32.const 0 - local.set $0 + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 2528 + i32.const 4 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store i32.const 0 local.get $2 i32.const 20 @@ -5349,36 +5146,36 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - loop $while-continue|025 + loop $while-continue|09 local.get $0 - local.get $1 - i32.lt_s + local.get $9 + i32.gt_s if i32.const 1 - local.get $0 + local.get $9 i32.const 2 i32.shl local.get $2 i32.add f32.load - local.tee $12 + local.tee $16 f32.const nan:0x400000 f32.eq - local.get $12 - local.get $12 + local.get $16 + local.get $16 f32.ne i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $0 + local.get $9 i32.const 1 i32.add - local.set $0 - br $while-continue|025 + local.set $9 + br $while-continue|09 end end i32.const 0 @@ -5402,10 +5199,8 @@ call $~lib/memory/memory.copy local.get $3 i32.store offset=16 - i32.const 0 - local.set $0 i32.const -1 - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf local.get $3 i32.const 20 @@ -5416,13 +5211,13 @@ local.tee $2 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf - loop $while-continue|027 - local.get $0 + loop $while-continue|012 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -5431,17 +5226,17 @@ i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|012 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -5450,27 +5245,25 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 i32.const -1 - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf28 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf13 local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf28 - loop $while-continue|030 - local.get $0 - local.get $2 - i32.lt_s + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf13 + loop $while-continue|028 + local.get $1 + local.get $4 + i32.gt_s if - local.get $0 - local.tee $1 + local.get $4 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -5478,18 +5271,18 @@ i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf28 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf13 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|030 + local.set $4 + br $while-continue|028 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -5501,10 +5294,10 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf31 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf29 local.get $3 i32.const 20 i32.sub @@ -5517,14 +5310,14 @@ i32.const 1 local.get $2 select - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf31 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf29 loop $while-continue|033 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -5532,18 +5325,18 @@ i32.load i32.const 9 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf31 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf29 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 2 i32.ne if @@ -5555,7 +5348,7 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf34 local.get $3 i32.const 20 @@ -5563,10 +5356,14 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 - i32.eqz + local.tee $2 + i32.const 0 + i32.lt_u + i32.const 1 + local.get $2 + select br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 - local.get $1 + local.get $2 i32.const 1 i32.sub local.tee $0 @@ -5575,13 +5372,13 @@ i32.const 0 i32.gt_s select - local.set $0 - loop $while-continue|036 - local.get $0 + local.set $1 + loop $while-continue|037 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $3 @@ -5590,17 +5387,17 @@ i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|036 + local.set $1 + br $while-continue|037 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -5612,8 +5409,8 @@ unreachable end i32.const -1 - local.set $0 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + local.set $2 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf38 local.get $3 i32.const 20 i32.sub @@ -5626,7 +5423,7 @@ i32.const 1 local.get $1 select - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf38 local.get $1 i32.const 3 i32.sub @@ -5636,13 +5433,13 @@ i32.const 0 i32.gt_s select - local.set $0 - loop $while-continue|039 - local.get $0 + local.set $2 + loop $while-continue|041 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl local.get $3 @@ -5650,18 +5447,18 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf37 - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf38 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|039 + local.set $2 + br $while-continue|041 end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1216 @@ -5674,58 +5471,60 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.const 2592 i32.const 16 call $~lib/memory/memory.copy - local.get $2 + local.get $3 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $3 + local.set $4 i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $0 - local.get $3 + local.get $2 + local.get $4 i32.add - local.get $0 + local.get $2 i32.const 1 i32.sub - local.get $3 - local.get $0 - local.get $3 + local.get $4 + local.get $2 + local.get $4 i32.le_s select - local.get $3 + local.get $4 i32.const 0 i32.lt_s select - local.set $1 - loop $while-continue|012 - local.get $1 + local.set $2 + loop $while-continue|01 + local.get $2 i32.const 0 i32.ge_s if - local.get $1 + local.get $2 + local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 @@ -5734,8 +5533,8 @@ local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|012 + local.set $2 + br $while-continue|01 end end i32.const -1 @@ -5754,55 +5553,56 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 - local.set $0 + local.tee $4 + local.set $2 i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 - local.get $3 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 + local.get $4 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 - local.get $0 - local.get $3 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 + local.get $2 + local.get $4 i32.add - local.get $3 + local.get $4 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $3 + local.get $2 + local.get $2 + local.get $4 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $1 - loop $while-continue|018 - local.get $1 + local.set $2 + loop $while-continue|07 + local.get $2 i32.const 0 i32.ge_s if - local.get $1 + local.get $2 + local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|018 + local.set $2 + br $while-continue|07 end end i32.const -1 @@ -5821,45 +5621,44 @@ end i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 - local.get $2 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 + local.get $2 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $2 i32.const 3 - i32.le_u + i32.le_s select - local.set $0 - loop $while-continue|041 - local.get $0 + local.set $1 + loop $while-continue|044 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|041 + local.set $1 + br $while-continue|044 end end i32.const -1 @@ -5877,51 +5676,51 @@ unreachable end i32.const -1 - local.set $0 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 - local.get $2 + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $2 i32.const 1 i32.sub i32.const 2 - local.get $1 + local.get $2 i32.const 2 - i32.le_u + i32.le_s select - local.set $0 - loop $while-continue|044 - local.get $0 + local.set $1 + loop $while-continue|048 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|044 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1216 @@ -5931,46 +5730,46 @@ unreachable end i32.const -1 - local.set $0 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 - local.get $2 + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 + local.get $2 i32.const 2 i32.sub - local.set $0 - loop $while-continue|047 - local.get $0 + local.set $1 + loop $while-continue|052 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|047 + local.set $1 + br $while-continue|052 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1216 @@ -5980,46 +5779,46 @@ unreachable end i32.const -1 - local.set $0 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 - local.get $2 + local.set $2 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 + local.get $0 i32.const 1 i32.sub - local.set $0 - loop $while-continue|050 - local.get $0 + local.set $2 + loop $while-continue|056 + local.get $2 i32.const 0 i32.ge_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 + local.get $2 i32.const 1 i32.sub - local.set $0 - br $while-continue|050 + local.set $2 + br $while-continue|056 end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 3 i32.ne if @@ -6044,8 +5843,14 @@ i32.const 2800 i32.store offset=20 local.get $2 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 2800 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -6069,8 +5874,14 @@ i32.const 2768 i32.store offset=20 local.get $2 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 2768 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -6094,8 +5905,14 @@ i32.const 2928 i32.store offset=20 local.get $2 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 2928 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -6119,8 +5936,14 @@ i32.const 3008 i32.store offset=20 local.get $2 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 3008 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -6144,8 +5967,14 @@ i32.const 2800 i32.store offset=20 local.get $2 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 2800 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -6166,8 +5995,14 @@ i32.const 2800 i32.store local.get $2 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u i32.const 2800 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6208,10 +6043,10 @@ local.tee $1 local.get $1 i32.const 1 - i32.gt_u + i32.gt_s select local.set $0 - loop $for-loop|053 + loop $for-loop|060 local.get $0 local.get $1 i32.lt_s @@ -6227,7 +6062,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|053 + br $for-loop|060 end end local.get $2 @@ -6258,68 +6093,66 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 3136 i32.const 12 call $~lib/memory/memory.copy - local.get $5 + local.get $4 i32.store offset=16 - i32.const 0 - local.set $0 - local.get $5 + local.get $4 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.const 1 i32.gt_u if - local.get $1 + local.get $0 i32.const 1 i32.shr_u - local.set $4 - local.get $1 + local.set $3 + local.get $0 i32.const 1 i32.sub - local.set $3 - loop $while-continue|055 - local.get $0 - local.get $4 - i32.lt_u + local.set $2 + loop $while-continue|064 + local.get $3 + local.get $10 + i32.gt_u if - local.get $0 + local.get $10 i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $1 + local.tee $0 i32.load - local.set $2 - local.get $1 - local.get $3 + local.set $1 local.get $0 + local.get $2 + local.get $10 i32.sub i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add - local.tee $1 + local.tee $0 i32.load i32.store + local.get $0 local.get $1 - local.get $2 i32.store - local.get $0 + local.get $10 i32.const 1 i32.add - local.set $0 - br $while-continue|055 + local.set $10 + br $while-continue|064 end end end - local.get $5 + local.get $4 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6332,7 +6165,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6345,7 +6178,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6362,35 +6195,69 @@ i32.const 20 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.const 3168 i32.const 20 call $~lib/memory/memory.copy - local.get $3 + local.get $4 i32.store offset=16 - local.get $3 - i32.const 3 - local.get $3 + local.get $4 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u + local.tee $3 + local.set $0 + i32.const 0 + local.get $3 + local.get $3 + i32.const 0 + i32.gt_s + select local.tee $2 - local.get $2 + i32.const 2 + i32.shl + local.get $4 + i32.add i32.const 3 - i32.gt_u + local.get $3 + local.get $3 + i32.const 3 + i32.gt_s select - local.tee $0 + local.tee $1 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add - local.get $2 local.get $0 + i32.const 0 + i32.lt_s + if (result i32) + local.get $0 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $0 + local.get $3 + local.get $0 + local.get $3 + i32.lt_s + select + end + local.get $1 i32.sub local.tee $1 + local.get $3 local.get $2 + i32.sub local.tee $0 local.get $0 local.get $1 @@ -6399,7 +6266,7 @@ i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $4 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6412,7 +6279,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6425,7 +6292,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6438,7 +6305,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6451,7 +6318,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6468,18 +6335,16 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $4 i32.const 3216 i32.const 12 call $~lib/memory/memory.copy - local.get $7 + local.get $4 i32.store offset=16 global.get $~lib/memory/__stack_pointer local.tee $6 i32.const 3248 i32.store offset=12 - i32.const 0 - local.set $0 local.get $6 i32.const 4 i32.sub @@ -6489,11 +6354,11 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 - local.get $7 + local.get $0 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -6503,41 +6368,41 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.load offset=4 - local.set $3 - loop $for-loop|028 - local.get $0 + local.set $2 + loop $for-loop|042 local.get $5 - i32.lt_s + local.get $11 + i32.gt_s if - local.get $7 - local.get $0 + local.get $11 i32.const 2 i32.shl - local.tee $2 + local.tee $1 + local.get $4 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $3 i32.add - local.get $1 local.get $0 - local.get $7 + local.get $11 + local.get $4 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $0 + local.get $11 i32.const 1 i32.add - local.set $0 - br $for-loop|028 + local.set $11 + br $for-loop|042 end end global.get $~lib/memory/__stack_pointer @@ -6545,9 +6410,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $6 - local.get $4 + local.get $3 i32.store offset=4 - local.get $4 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6560,7 +6425,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6573,7 +6438,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const 2 call $~lib/array/Array#__get i32.const 4 @@ -6589,38 +6454,36 @@ global.get $~lib/memory/__stack_pointer i32.const 3280 i32.store offset=12 - i32.const 0 - local.set $0 - local.get $7 + local.get $4 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $2 - loop $for-loop|060 - local.get $0 - local.get $2 - i32.lt_s + local.set $1 + loop $for-loop|070 + local.get $1 + local.get $8 + i32.gt_s if - local.get $0 + local.get $8 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $7 + local.get $8 + local.get $4 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $8 i32.const 1 i32.add - local.set $0 - br $for-loop|060 + local.set $8 + br $for-loop|070 end end global.get $std/staticarray/maxVal @@ -6635,10 +6498,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $17 + local.tee $11 i32.const 3312 i32.store offset=12 - local.get $17 + local.get $11 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6655,51 +6518,51 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $6 + local.tee $3 i32.store - local.get $7 + local.get $4 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $13 - loop $for-loop|029 - local.get $9 - local.get $13 - i32.lt_s + local.set $10 + loop $for-loop|045 + local.get $10 + local.get $23 + i32.gt_s if - local.get $9 + local.get $23 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load - local.set $5 + local.set $9 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $9 - local.get $7 + local.get $23 + local.get $4 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $6 + local.get $3 i32.load offset=12 - local.tee $14 + local.tee $8 i32.const 1 i32.add - local.tee $15 + local.tee $7 + local.get $3 local.tee $2 - local.get $6 i32.load offset=8 - local.tee $4 + local.tee $6 i32.const 2 i32.shr_u i32.gt_u if - local.get $2 + local.get $7 i32.const 268435455 i32.gt_u if @@ -6711,7 +6574,7 @@ unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $4 + local.get $6 i32.const 1 i32.shl local.tee $0 @@ -6721,9 +6584,9 @@ i32.lt_u select local.tee $1 - local.get $2 + local.get $7 i32.const 8 - local.get $2 + local.get $7 i32.const 8 i32.gt_u select @@ -6734,15 +6597,14 @@ local.get $1 i32.lt_u select - local.tee $3 - local.tee $2 - local.get $6 + local.tee $13 + local.get $2 i32.load - local.tee $16 - local.tee $1 + local.tee $5 + local.tee $0 i32.const 20 i32.sub - local.tee $10 + local.tee $12 i32.load i32.const -4 i32.and @@ -6750,85 +6612,85 @@ i32.sub i32.le_u if - local.get $10 - local.get $2 + local.get $12 + local.get $13 i32.store offset=16 - local.get $1 - local.set $0 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $2 - local.get $10 + local.get $13 + local.get $12 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $0 - local.get $1 - local.get $2 - local.get $10 - i32.load offset=16 local.tee $1 - local.get $1 - local.get $2 + local.get $0 + local.get $13 + local.get $12 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $13 i32.gt_u select call $~lib/memory/memory.copy + local.get $1 + local.set $0 end local.get $0 - local.get $4 + local.get $6 i32.add - local.get $3 - local.get $4 + local.get $13 + local.get $6 i32.sub call $~lib/memory/memory.fill local.get $0 - local.get $16 + local.get $5 i32.ne if - local.get $6 + local.get $2 local.get $0 i32.store - local.get $6 + local.get $2 local.get $0 i32.store offset=4 local.get $0 if - local.get $6 + local.get $2 local.get $0 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end - local.get $6 - local.get $3 + local.get $2 + local.get $13 i32.store offset=8 end - local.get $6 + local.get $2 i32.load offset=4 - local.get $14 + local.get $8 i32.const 2 i32.shl i32.add - local.get $5 + local.get $9 i32.store - local.get $6 - local.get $15 + local.get $2 + local.get $7 i32.store offset=12 end - local.get $9 + local.get $23 i32.const 1 i32.add - local.set $9 - br $for-loop|029 + local.set $23 + br $for-loop|045 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $17 - local.get $6 + local.get $11 + local.get $3 i32.store offset=24 - local.get $6 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -6840,7 +6702,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6853,7 +6715,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6869,45 +6731,44 @@ global.get $~lib/memory/__stack_pointer i32.const 3344 i32.store offset=12 - i32.const 0 - local.set $0 - local.get $7 + local.get $4 + local.tee $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|064 - local.get $0 + loop $for-loop|076 local.get $2 - i32.lt_s + local.get $22 + i32.gt_s if - local.get $0 + local.get $22 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load local.set $1 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $15 local.get $1 + local.get $22 local.get $0 - local.get $7 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $0 + local.set $15 + local.get $22 i32.const 1 i32.add - local.set $0 - br $for-loop|064 + local.set $22 + br $for-loop|076 end end - local.get $8 + local.get $15 i32.const 6 i32.ne if @@ -6921,9 +6782,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3376 i32.store offset=12 - i32.const 0 - local.set $8 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6931,37 +6790,37 @@ i32.shr_u i32.const 1 i32.sub - local.set $0 - loop $for-loop|066 - local.get $0 + local.set $1 + loop $for-loop|080 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load - local.set $1 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $8 + local.get $14 + local.get $2 local.get $1 local.get $0 - local.get $7 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $8 - local.get $0 + local.set $14 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|066 + local.set $1 + br $for-loop|080 end end - local.get $8 + local.get $14 i32.const 6 i32.ne if @@ -6972,28 +6831,26 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#some (result i32) - i32.const 0 - local.set $0 - local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=12 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|068 - local.get $0 + loop $for-loop|084 local.get $2 - i32.lt_s + local.get $21 + i32.gt_s if - local.get $0 + local.get $21 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load local.set $1 @@ -7001,18 +6858,18 @@ global.set $~argumentsLength i32.const 1 local.get $1 + local.get $21 local.get $0 - local.get $7 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#some drop - local.get $0 + local.get $21 i32.const 1 i32.add - local.set $0 - br $for-loop|068 + local.set $21 + br $for-loop|084 end end i32.const 0 @@ -7026,28 +6883,26 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3440 - i32.store offset=12 - block $__inlined_func$~lib/staticarray/StaticArray#some69 (result i32) - i32.const 0 - local.set $0 - local.get $7 + block $__inlined_func$~lib/staticarray/StaticArray#some86 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=12 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|071 - local.get $0 + loop $for-loop|089 local.get $2 - i32.lt_s + local.get $20 + i32.gt_s if - local.get $0 + local.get $20 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load local.set $1 @@ -7055,18 +6910,18 @@ global.set $~argumentsLength i32.const 1 local.get $1 + local.get $20 local.get $0 - local.get $7 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#some69 + br_if $__inlined_func$~lib/staticarray/StaticArray#some86 drop - local.get $0 + local.get $20 i32.const 1 i32.add - local.set $0 - br $for-loop|071 + local.set $20 + br $for-loop|089 end end i32.const 0 @@ -7079,28 +6934,26 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3472 - i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#every (result i32) - i32.const 0 - local.set $0 - local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=12 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|073 - local.get $0 + loop $for-loop|093 local.get $2 - i32.lt_s + local.get $19 + i32.gt_s if - local.get $0 + local.get $19 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load local.set $1 @@ -7108,19 +6961,19 @@ global.set $~argumentsLength i32.const 0 local.get $1 + local.get $19 local.get $0 - local.get $7 i32.const 3472 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#every drop - local.get $0 + local.get $19 i32.const 1 i32.add - local.set $0 - br $for-loop|073 + local.set $19 + br $for-loop|093 end end i32.const 1 @@ -7134,28 +6987,26 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3504 - i32.store offset=12 - block $__inlined_func$~lib/staticarray/StaticArray#every74 (result i32) - i32.const 0 - local.set $0 - local.get $7 + block $__inlined_func$~lib/staticarray/StaticArray#every95 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=12 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|076 - local.get $0 + loop $for-loop|098 local.get $2 - i32.lt_s + local.get $18 + i32.gt_s if - local.get $0 + local.get $18 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load local.set $1 @@ -7163,19 +7014,19 @@ global.set $~argumentsLength i32.const 0 local.get $1 + local.get $18 local.get $0 - local.get $7 i32.const 3504 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#every74 + br_if $__inlined_func$~lib/staticarray/StaticArray#every95 drop - local.get $0 + local.get $18 i32.const 1 i32.add - local.set $0 - br $for-loop|076 + local.set $18 + br $for-loop|098 end end i32.const 1 @@ -7191,9 +7042,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3536 i32.store offset=12 - i32.const 0 - local.set $0 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7201,36 +7050,36 @@ i32.shr_u local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#findIndex - loop $for-loop|078 - local.get $0 + loop $for-loop|0102 local.get $2 - i32.lt_s + local.get $25 + i32.gt_s if - local.get $0 + local.get $25 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $25 local.get $0 - local.get $7 i32.const 3536 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex - local.get $0 + local.get $25 i32.const 1 i32.add - local.set $0 - br $for-loop|078 + local.set $25 + br $for-loop|0102 end end i32.const -1 - local.set $0 + local.set $25 end - local.get $0 + local.get $25 i32.const 1 i32.ne if @@ -7244,46 +7093,44 @@ global.get $~lib/memory/__stack_pointer i32.const 3568 i32.store offset=12 - i32.const 0 - local.set $0 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - block $__inlined_func$~lib/staticarray/StaticArray#findIndex79 - loop $for-loop|081 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#findIndex104 + loop $for-loop|0107 local.get $2 - i32.lt_s + local.get $24 + i32.gt_s if - local.get $0 + local.get $24 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $24 local.get $0 - local.get $7 i32.const 3568 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex79 - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex104 + local.get $24 i32.const 1 i32.add - local.set $0 - br $for-loop|081 + local.set $24 + br $for-loop|0107 end end i32.const -1 - local.set $0 + local.set $24 end - local.get $0 + local.get $24 i32.const -1 i32.ne if @@ -7297,7 +7144,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=12 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7305,38 +7152,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - loop $for-loop|083 - local.get $0 + loop $for-loop|0111 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $7 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $for-loop|083 + local.set $1 + br $for-loop|0111 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -7350,7 +7197,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=12 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7358,39 +7205,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex84 - loop $for-loop|086 - local.get $1 + local.set $2 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex113 + loop $for-loop|0116 + local.get $2 i32.const 0 i32.ge_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 - local.tee $0 - local.get $7 + local.get $2 + local.get $0 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex84 - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex113 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|086 + local.set $2 + br $for-loop|0116 end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const -1 i32.ne if @@ -7405,16 +7251,16 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3664 i32.const 16 call $~lib/memory/memory.copy - local.get $1 + local.get $0 i32.store offset=28 i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7426,34 +7272,34 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of126 - block $0of127 - block $outOfRange28 + block $1of114 + block $0of115 + block $outOfRange16 global.get $~argumentsLength - br_table $0of127 $1of126 $outOfRange28 + br_table $0of115 $1of114 $outOfRange16 end unreachable end i32.const 3712 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 3712 i32.store end - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $0 + local.get $1 call $~lib/util/sort/SORT 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 0 call $~lib/staticarray/StaticArray#__get if @@ -7464,7 +7310,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7477,7 +7323,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7490,7 +7336,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7509,12 +7355,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|089 + loop $while-continue|0121 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|089 + br $while-continue|0121 end end end @@ -7588,7 +7434,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7612,8 +7457,6 @@ i32.const 2 i32.shl local.tee $4 - local.set $6 - local.get $4 i32.const 0 call $~lib/rt/itcms/__new local.set $3 @@ -7621,7 +7464,7 @@ if local.get $3 local.get $2 - local.get $6 + local.get $4 call $~lib/memory/memory.copy end local.get $5 @@ -7726,7 +7569,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -7736,7 +7579,7 @@ i32.const 0 local.get $1 select - local.tee $2 + local.tee $3 i32.add local.tee $4 i32.const 268435455 @@ -7759,7 +7602,7 @@ i32.store local.get $4 local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.shl local.tee $0 @@ -7768,7 +7611,7 @@ local.get $4 i32.add local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -7805,13 +7648,13 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -7821,9 +7664,9 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end @@ -7834,7 +7677,7 @@ i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add local.tee $2 i32.const 0 @@ -7844,9 +7687,9 @@ select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end @@ -7863,39 +7706,41 @@ local.tee $2 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store local.get $1 i32.const 2 i32.shl local.get $0 i32.add + local.set $1 + i32.const 0 local.set $0 loop $while-continue|0 + local.get $0 local.get $2 - local.get $3 - i32.gt_u + i32.lt_u if + local.get $0 local.get $3 - local.get $4 i32.add local.get $0 - local.get $3 + local.get $1 i32.add i32.load - local.tee $1 + local.tee $4 i32.store - local.get $1 + local.get $4 if + local.get $3 local.get $4 - local.get $1 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end @@ -7903,7 +7748,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 ) (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -7972,7 +7817,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7997,15 +7841,15 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $5 + local.tee $4 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $6 + local.tee $5 i32.add - local.tee $4 + local.tee $3 i32.const 268435455 i32.gt_u if @@ -8017,83 +7861,85 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $6 i32.store - local.get $7 + local.get $6 i32.load offset=4 - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 2 i32.shl - local.set $5 + local.set $4 loop $for-loop|0 - local.get $3 - local.get $5 + local.get $2 + local.get $4 i32.lt_u if + local.get $2 local.get $3 - local.get $4 i32.add local.get $0 - local.get $3 + local.get $2 i32.add i32.load - local.tee $8 + local.tee $7 i32.store - local.get $8 + local.get $7 if + local.get $6 local.get $7 - local.get $8 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $2 i32.const 4 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end + local.get $3 local.get $4 - local.get $5 i32.add - local.set $0 + local.set $2 local.get $1 i32.load offset=4 local.set $1 - local.get $6 + local.get $5 i32.const 2 i32.shl local.set $3 + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 + local.get $0 local.get $3 i32.lt_u if local.get $0 local.get $2 i32.add + local.get $0 local.get $1 - local.get $2 i32.add i32.load local.tee $4 i32.store local.get $4 if - local.get $7 + local.get $6 local.get $4 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 + local.get $0 i32.const 4 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -8101,7 +7947,215 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + if + i32.const 20272 + i32.const 20320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2768 + return + end + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $1 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2768 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $5 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $3 + i32.add + local.set $3 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $6 + i32.mul + local.get $3 + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + local.get $4 + i32.const 1 + i32.shl + local.get $3 + 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 + call $~lib/memory/memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $4 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.get $2 + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + local.get $4 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 38a3381beb..f021a85f2e 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1127,38 +1127,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 37476 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1174,221 +1247,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 37476 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37476 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 37476 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 37476 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1424 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1584,11 +1582,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1599,15 +1597,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1785,8 +1784,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -3070,6 +3069,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -3104,47 +3104,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -3155,17 +3155,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -3178,7 +3177,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -3291,25 +3292,25 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $__inlined_func$~lib/util/number/itoa64 (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 21092 - i32.lt_s - if - i32.const 37504 - i32.const 37552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa64 local.get $0 i64.eqz if @@ -3318,6 +3319,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 19200 + local.set $1 br $__inlined_func$~lib/util/number/itoa64 end i64.const 0 @@ -3553,32 +3555,32 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 end + 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) - block $__inlined_func$~lib/string/String#concat (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 21092 - i32.lt_s - if - i32.const 37504 - i32.const 37552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat local.get $0 i32.const 20 i32.sub @@ -3587,7 +3589,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -3596,9 +3598,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 - i32.add local.tee $4 + i32.add + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3606,30 +3608,31 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1056 + local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 - local.get $0 local.get $2 + local.get $0 + local.get $3 call $~lib/memory/memory.copy local.get $2 - local.get $4 + local.get $3 i32.add local.get $1 - local.get $3 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 end + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -6096,7 +6099,7 @@ end i64.extend_i32_s local.set $0 - block $__inlined_func$~lib/string/String#codePointAt6 (result i32) + block $__inlined_func$~lib/string/String#codePointAt0 (result i32) i32.const -1 local.get $6 i32.const 20 @@ -6107,7 +6110,7 @@ local.tee $7 i32.const 1 i32.le_u - br_if $__inlined_func$~lib/string/String#codePointAt6 + br_if $__inlined_func$~lib/string/String#codePointAt0 drop local.get $7 i32.const 2 @@ -6122,7 +6125,7 @@ i32.or if local.get $7 - br $__inlined_func$~lib/string/String#codePointAt6 + br $__inlined_func$~lib/string/String#codePointAt0 end local.get $7 local.get $6 @@ -6132,7 +6135,7 @@ i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt6 + br_if $__inlined_func$~lib/string/String#codePointAt0 drop local.get $8 local.get $7 @@ -6154,7 +6157,7 @@ i64.add local.set $0 end - block $__inlined_func$~lib/string/String#codePointAt8 (result i32) + block $__inlined_func$~lib/string/String#codePointAt1 (result i32) i32.const -1 local.get $6 i32.const 20 @@ -6165,7 +6168,7 @@ local.tee $7 i32.const 2 i32.le_u - br_if $__inlined_func$~lib/string/String#codePointAt8 + br_if $__inlined_func$~lib/string/String#codePointAt1 drop local.get $7 i32.const 3 @@ -6180,7 +6183,7 @@ i32.or if local.get $7 - br $__inlined_func$~lib/string/String#codePointAt8 + br $__inlined_func$~lib/string/String#codePointAt1 end local.get $7 local.get $6 @@ -6190,7 +6193,7 @@ i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt8 + br_if $__inlined_func$~lib/string/String#codePointAt1 drop local.get $6 local.get $7 @@ -6214,7 +6217,7 @@ local.get $0 end local.set $2 - block $__inlined_func$~lib/string/String#codePointAt10 (result i32) + block $__inlined_func$~lib/string/String#codePointAt2 (result i32) i32.const -1 local.get $1 i32.const 20 @@ -6224,7 +6227,7 @@ i32.shr_u local.tee $6 i32.eqz - br_if $__inlined_func$~lib/string/String#codePointAt10 + br_if $__inlined_func$~lib/string/String#codePointAt2 drop local.get $6 i32.const 1 @@ -6239,7 +6242,7 @@ i32.or if local.get $6 - br $__inlined_func$~lib/string/String#codePointAt10 + br $__inlined_func$~lib/string/String#codePointAt2 end local.get $6 local.get $1 @@ -6249,7 +6252,7 @@ i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt10 + br_if $__inlined_func$~lib/string/String#codePointAt2 drop local.get $7 local.get $6 @@ -6261,7 +6264,7 @@ end i64.extend_i32_s local.set $0 - block $__inlined_func$~lib/string/String#codePointAt12 (result i32) + block $__inlined_func$~lib/string/String#codePointAt3 (result i32) i32.const -1 local.get $1 i32.const 20 @@ -6272,7 +6275,7 @@ local.tee $6 i32.const 1 i32.le_u - br_if $__inlined_func$~lib/string/String#codePointAt12 + br_if $__inlined_func$~lib/string/String#codePointAt3 drop local.get $6 i32.const 2 @@ -6287,7 +6290,7 @@ i32.or if local.get $6 - br $__inlined_func$~lib/string/String#codePointAt12 + br $__inlined_func$~lib/string/String#codePointAt3 end local.get $6 local.get $1 @@ -6297,7 +6300,7 @@ i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt12 + br_if $__inlined_func$~lib/string/String#codePointAt3 drop local.get $7 local.get $6 @@ -6319,7 +6322,7 @@ i64.add local.set $0 end - block $__inlined_func$~lib/string/String#codePointAt14 (result i32) + block $__inlined_func$~lib/string/String#codePointAt4 (result i32) i32.const -1 local.get $1 i32.const 20 @@ -6330,7 +6333,7 @@ local.tee $6 i32.const 2 i32.le_u - br_if $__inlined_func$~lib/string/String#codePointAt14 + br_if $__inlined_func$~lib/string/String#codePointAt4 drop local.get $6 i32.const 3 @@ -6345,7 +6348,7 @@ i32.or if local.get $6 - br $__inlined_func$~lib/string/String#codePointAt14 + br $__inlined_func$~lib/string/String#codePointAt4 end local.get $6 local.get $1 @@ -6355,7 +6358,7 @@ i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt14 + br_if $__inlined_func$~lib/string/String#codePointAt4 drop local.get $1 local.get $6 @@ -6645,7 +6648,7 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $9 i32.store loop $for-loop|0 local.get $3 @@ -6658,12 +6661,12 @@ local.get $0 i32.add i32.load16_u - local.tee $2 + local.tee $4 i32.const 7 i32.shr_u if block $for-continue|0 - local.get $2 + local.get $4 i32.const 55295 i32.sub i32.const 1025 @@ -6681,7 +6684,7 @@ local.get $0 i32.add i32.load16_u offset=2 - local.tee $4 + local.tee $2 i32.const 56319 i32.sub i32.const 1025 @@ -6691,10 +6694,10 @@ i32.const 1 i32.add local.set $3 - local.get $4 + local.get $2 i32.const 1023 i32.and - local.get $2 + local.get $4 local.tee $1 i32.const 1023 i32.and @@ -6703,53 +6706,53 @@ i32.or i32.const 65536 i32.add - local.tee $2 + local.tee $4 i32.const 131072 i32.ge_u if - local.get $6 + local.get $10 i32.const 1 i32.shl - local.get $7 + local.get $9 i32.add - local.get $4 + local.get $2 i32.const 16 i32.shl local.get $1 i32.or i32.store - local.get $6 + local.get $10 i32.const 1 i32.add - local.set $6 + local.set $10 br $for-continue|0 end end end - local.get $2 + local.get $4 i32.const 304 i32.eq if - local.get $6 + local.get $10 i32.const 1 i32.shl - local.get $7 + local.get $9 i32.add i32.const 50790505 i32.store - local.get $6 + local.get $10 i32.const 1 i32.add - local.set $6 + local.set $10 else - local.get $2 + local.get $4 i32.const 931 i32.eq if - local.get $6 + local.get $10 i32.const 1 i32.shl - local.get $7 + local.get $9 i32.add i32.const 962 i32.const 963 @@ -6760,10 +6763,10 @@ block $~lib/util/string/isFinalSigma|inlined.0 (result i32) i32.const 0 local.set $1 - local.get $3 i32.const 0 local.get $3 local.tee $2 + local.tee $4 i32.const 30 i32.sub local.tee $5 @@ -6771,20 +6774,20 @@ i32.const 0 i32.lt_s select - local.set $9 + local.set $6 loop $while-continue|1 - local.get $2 - local.get $9 + local.get $4 + local.get $6 i32.gt_s if i32.const -1 - local.set $5 + local.set $11 block $~lib/util/string/codePointBefore|inlined.0 - local.get $2 + local.get $4 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 - local.get $2 + local.get $4 i32.const 1 i32.sub i32.const 1 @@ -6792,22 +6795,22 @@ local.get $0 i32.add i32.load16_u - local.tee $11 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.eq - local.get $2 + local.get $4 i32.const 2 i32.sub i32.const 0 i32.ge_s i32.and if - local.get $11 + local.get $7 i32.const 1023 i32.and - local.get $2 + local.get $4 i32.const 2 i32.sub i32.const 1 @@ -6815,7 +6818,7 @@ local.get $0 i32.add i32.load16_u - local.tee $10 + local.tee $5 i32.const 1023 i32.and i32.const 10 @@ -6823,8 +6826,8 @@ i32.add i32.const 65536 i32.add - local.set $5 - local.get $10 + local.set $11 + local.get $5 i32.const 64512 i32.and i32.const 55296 @@ -6832,20 +6835,20 @@ br_if $~lib/util/string/codePointBefore|inlined.0 end i32.const 65533 - local.get $11 - local.get $11 + local.get $7 + local.get $7 i32.const 63488 i32.and i32.const 55296 i32.eq select - local.set $5 + local.set $11 end - local.get $5 + local.get $11 i32.const 918000 i32.lt_u if (result i32) - local.get $5 + local.get $11 i32.const 8 i32.shr_u i32.const 7212 @@ -6855,14 +6858,14 @@ i32.shl i32.const 7212 i32.add - local.get $5 + local.get $11 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $5 + local.get $11 i32.const 7 i32.and i32.shr_u @@ -6873,11 +6876,12 @@ end i32.eqz if - local.get $5 + i32.const 0 + local.get $11 i32.const 127370 i32.lt_u if (result i32) - local.get $5 + local.get $11 i32.const 8 i32.shr_u i32.const 10220 @@ -6887,14 +6891,14 @@ i32.shl i32.const 10220 i32.add - local.get $5 + local.get $11 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $5 + local.get $11 i32.const 7 i32.and i32.shr_u @@ -6903,22 +6907,20 @@ else i32.const 0 end - if (result i32) - i32.const 1 - else - i32.const 0 - br $~lib/util/string/isFinalSigma|inlined.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 $5 + local.get $4 + local.get $11 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $2 + local.set $4 br $while-continue|1 end end @@ -6927,9 +6929,10 @@ i32.eqz br_if $~lib/util/string/isFinalSigma|inlined.0 drop + local.get $2 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 30 i32.add local.tee $1 @@ -6938,13 +6941,13 @@ local.get $8 i32.lt_s select - local.set $4 + local.set $5 loop $while-continue|2 - local.get $2 local.get $4 + local.get $5 i32.lt_s if - local.get $2 + local.get $4 i32.const 1 i32.shl local.get $0 @@ -6956,25 +6959,25 @@ i32.const 55296 i32.eq local.get $8 - local.get $2 + local.get $4 i32.const 1 i32.add i32.ne i32.and if - local.get $2 + local.get $4 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u offset=2 - local.tee $5 + local.tee $2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $5 + local.get $2 local.get $1 i32.const 10 i32.shl @@ -7054,9 +7057,9 @@ i32.ge_u i32.const 1 i32.add - local.get $2 + local.get $4 i32.add - local.set $2 + local.set $4 br $while-continue|2 end end @@ -7068,23 +7071,23 @@ select i32.store16 else - local.get $2 + local.get $4 i32.const 9398 i32.sub i32.const 25 i32.le_u if - local.get $6 + local.get $10 i32.const 1 i32.shl - local.get $7 + local.get $9 i32.add - local.get $2 + local.get $4 i32.const 26 i32.add i32.store16 else - local.get $2 + local.get $4 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 @@ -7093,18 +7096,18 @@ i32.const 65536 i32.lt_u if - local.get $6 + local.get $10 i32.const 1 i32.shl - local.get $7 + local.get $9 i32.add local.get $1 i32.store16 else - local.get $6 + local.get $10 i32.const 1 i32.shl - local.get $7 + local.get $9 i32.add local.get $1 i32.const 65536 @@ -7123,22 +7126,22 @@ i32.shl i32.or i32.store - local.get $6 + local.get $10 i32.const 1 i32.add - local.set $6 + local.set $10 end end end end end else - local.get $6 + local.get $10 i32.const 1 i32.shl - local.get $7 + local.get $9 i32.add - local.get $2 + local.get $4 i32.const 7084 i32.add i32.load8_u @@ -7148,15 +7151,15 @@ i32.const 1 i32.add local.set $3 - local.get $6 + local.get $10 i32.const 1 i32.add - local.set $6 + local.set $10 br $for-loop|0 end end - local.get $7 - local.get $6 + local.get $9 + local.get $10 i32.const 1 i32.shl call $~lib/rt/itcms/__renew @@ -7248,19 +7251,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -7270,22 +7273,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 37476 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -7299,7 +7302,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -7311,7 +7314,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -7319,15 +7322,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -7335,7 +7338,7 @@ else i32.const 21056 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1280 @@ -7345,7 +7348,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 21060 @@ -7363,25 +7366,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index cf75434ac5..eaf627f4de 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -712,38 +712,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 38924 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -759,221 +832,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 38924 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 38924 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 38924 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 38924 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + if + i32.const 0 + i32.const 1488 + i32.const 559 + 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 + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1169,11 +1167,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1184,15 +1182,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1370,8 +1369,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2454,6 +2453,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -2488,47 +2488,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -2539,17 +2539,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -2562,7 +2561,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) @@ -2703,1134 +2704,1136 @@ (func $~start (local $0 i32) (local $1 i32) - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 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 + block $folding-inner1 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 38924 - 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 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 12 - i32.ne - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 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.store + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 - i32.const 1088 + i32.store + local.get $0 + i32.const 1056 + i32.store + i32.const 1052 + i32.load + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size i32.const 16 - i32.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.shl + i32.const 38924 + 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 22540 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + local.get $0 i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - if - i32.const 0 - i32.const 1088 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - if - i32.const 0 - i32.const 1088 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 82 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 216 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=10 - i32.const 98 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 26 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=11 - i32.const 223 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF16DecodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 1056 - i32.store - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 1056 - i32.store - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - i32.const 164 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 173 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 162 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 11 - i32.ne - if - i32.const 0 - 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.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.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + i32.const 98 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=11 + i32.const 223 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 i32.const 0 - i32.const 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.store offset=8 + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF16DecodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 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.store + local.get $0 + i32.const 1056 + i32.store + i32.const 1056 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 + call $~lib/string/String.UTF8.byteLength + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 183 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + i32.const 164 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 173 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 162 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 183 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + i32.const 164 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 173 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 162 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + if + i32.const 0 + i32.const 1088 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 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.store offset=8 + local.get $0 + i32.const 1824 + i32.store offset=4 + i32.const 1824 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 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 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 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store offset=4 + local.get $0 + i32.const 1824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1824 + i32.store offset=4 + i32.const 1824 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 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 0 - i32.const 1088 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1824 - i32.store offset=4 - i32.const 1824 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1824 - i32.store offset=4 - local.get $0 - i32.const 1824 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1856 + i32.store offset=4 + local.get $0 + i32.const 1856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1888 + i32.store offset=4 + i32.const 1888 i32.const 0 - i32.const 1088 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1824 - i32.store offset=4 - i32.const 1824 - i32.const 0 - 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 $0 - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1856 - i32.store offset=4 - local.get $0 - i32.const 1856 - call $~lib/string/String.__eq - i32.eqz - if i32.const 0 - i32.const 1088 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1888 - i32.store offset=4 - i32.const 1888 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1888 - i32.store offset=4 - local.get $0 - i32.const 1888 - 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 $0 + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 0 - i32.const 1088 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1888 - i32.store offset=4 - i32.const 1888 - i32.const 0 - 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 $0 - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1856 - i32.store offset=4 - local.get $0 - i32.const 1856 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1888 + i32.store offset=4 + local.get $0 + i32.const 1888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1888 + i32.store offset=4 + i32.const 1888 i32.const 0 - i32.const 1088 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.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 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 0 - i32.const 1088 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $0 - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.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 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1856 + i32.store offset=4 + local.get $0 + i32.const 1856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 i32.const 0 - i32.const 1088 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.store offset=12 - i32.const 1920 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if + i32.store offset=8 + local.get $0 + i32.const 1056 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1056 i32.const 0 - i32.const 1088 - i32.const 119 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 4 - i32.ne - if + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 0 - i32.const 1088 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=20 - i32.const 1968 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if + call $~lib/string/String.UTF8.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 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 i32.const 0 - i32.const 1088 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if + i32.store offset=24 + local.get $0 + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.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 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1920 + i32.store offset=12 + i32.const 1920 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1920 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=20 + i32.const 1968 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1920 i32.const 0 - i32.const 1088 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=24 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=24 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8DecodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store + i32.const 2032 + call $std/string-encoding/testLarge + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.store + i32.const 15152 + call $std/string-encoding/testLarge + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8DecodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store - i32.const 2032 - call $std/string-encoding/testLarge - global.get $~lib/memory/__stack_pointer - i32.const 15152 - i32.store - i32.const 15152 - call $std/string-encoding/testLarge - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0 + br $while-continue|1 end end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end i32.const 38944 i32.const 38992 @@ -4765,9 +4768,10 @@ local.get $0 local.get $1 i32.add - local.tee $5 + local.set $5 local.get $0 - i32.lt_u + local.get $5 + i32.gt_u if i32.const 0 i32.const 1776 @@ -4994,19 +4998,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -5016,22 +5020,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 38924 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -5045,7 +5049,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -5057,7 +5061,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -5065,15 +5069,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -5081,7 +5085,7 @@ else i32.const 22512 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1344 @@ -5091,7 +5095,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 22516 @@ -5109,25 +5113,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 0888611a85..de9d16b7bf 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -1227,19 +1227,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -1851,38 +1849,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 42268 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1898,221 +1969,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 42268 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1440 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 42268 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 42268 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 42268 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1648 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2484,11 +2480,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -2499,19 +2495,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -2519,7 +2516,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -2530,16 +2527,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -2550,16 +2547,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -2567,7 +2564,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -2575,8 +2572,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -2593,7 +2590,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -2603,13 +2600,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -2622,40 +2619,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -2685,8 +2682,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -5929,23 +5926,20 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 - local.tee $2 i32.load offset=12 local.tee $3 i32.const 1 i32.add - local.tee $4 - local.tee $7 - local.get $2 + local.tee $2 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $4 i32.const 2 i32.shr_u i32.gt_u if - local.get $7 + local.get $2 i32.const 268435455 i32.gt_u if @@ -5956,61 +5950,61 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load - local.tee $6 - local.get $5 + local.tee $5 + local.get $4 i32.const 1 i32.shl - local.tee $8 + local.tee $6 i32.const 1073741820 - local.get $8 + local.get $6 i32.const 1073741820 i32.lt_u select - local.tee $8 - local.get $7 + local.tee $6 + local.get $2 i32.const 8 - local.get $7 + local.get $2 i32.const 8 i32.gt_u select i32.const 2 i32.shl local.tee $7 + local.get $6 local.get $7 - local.get $8 - i32.lt_u + i32.gt_u select - local.tee $7 + local.tee $6 call $~lib/rt/itcms/__renew - local.tee $8 - local.get $5 + local.tee $7 + local.get $4 i32.add - local.get $7 - local.get $5 + local.get $6 + local.get $4 i32.sub call $~lib/memory/memory.fill - local.get $6 - local.get $8 + local.get $5 + local.get $7 i32.ne if - local.get $2 - local.get $8 + local.get $0 + local.get $7 i32.store - local.get $2 - local.get $8 + local.get $0 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 if - local.get $2 - local.get $8 + local.get $0 + local.get $7 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end - local.get $2 - local.get $7 + local.get $0 + local.get $6 i32.store offset=8 end local.get $0 @@ -6023,13 +6017,13 @@ i32.store local.get $1 if - local.get $2 + local.get $0 local.get $1 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $0 - local.get $4 + local.get $2 i32.store offset=12 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -6307,8 +6301,8 @@ ) (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 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) (local $8 i32) (local $9 i64) (local $10 i32) @@ -6332,12 +6326,11 @@ i64.sub local.tee $12 i64.and - local.set $6 + local.set $7 local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $2 local.tee $5 i32.const 100000 i32.lt_u @@ -6384,9 +6377,9 @@ i32.add end end - local.set $8 + local.set $2 loop $while-continue|0 - local.get $8 + local.get $2 i32.const 0 i32.gt_s if @@ -6402,137 +6395,137 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + 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 $2 + local.get $5 i32.const 1000000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 - local.set $5 + local.get $5 + local.set $6 i32.const 0 - local.set $2 + local.set $5 br $break|1 end i32.const 0 - local.set $5 + local.set $6 end local.get $4 - local.get $5 + local.get $6 i32.or if local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.const 22864 i32.add - local.get $5 + local.get $6 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 - local.get $6 - local.get $2 + local.set $2 + local.get $7 + local.get $5 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -6542,11 +6535,11 @@ local.get $3 i64.le_u if - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $2 i32.const 2 i32.shl i32.const 23792 @@ -6561,9 +6554,9 @@ i32.shl i32.const 22862 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|3 local.get $0 local.get $9 @@ -6581,11 +6574,11 @@ local.get $0 local.get $1 i64.add - local.tee $6 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $6 + local.get $7 local.get $9 i64.lt_u i32.or @@ -6593,10 +6586,10 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $1 i64.add @@ -6604,8 +6597,8 @@ br $while-continue|3 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -6618,7 +6611,7 @@ i64.const 10 i64.mul local.set $3 - local.get $6 + local.get $7 i64.const 10 i64.mul local.tee $0 @@ -6633,11 +6626,11 @@ i64.ne if local.get $4 - local.tee $2 + local.tee $5 i32.const 1 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 22864 @@ -6650,26 +6643,26 @@ i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 + local.set $2 local.get $3 local.get $0 local.get $12 i64.and - local.tee $6 + local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $6 + local.get $7 local.set $0 i32.const 0 - local.get $8 + local.get $2 i32.sub i32.const 2 i32.shl @@ -6684,9 +6677,9 @@ i32.shl i32.const 22862 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|6 local.get $0 local.get $1 @@ -6704,22 +6697,22 @@ local.get $0 local.get $11 i64.add - local.tee $6 + local.tee $7 local.get $1 i64.sub i64.gt_u local.get $1 - local.get $6 + local.get $7 i64.gt_u i32.or else i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $11 i64.add @@ -6727,8 +6720,8 @@ br $while-continue|6 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -7348,16 +7341,26 @@ block $folding-inner0 block $invalid block $~lib/array/Array<~lib/string/String> - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $~lib/array/Array<~lib/string/String> $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 @@ -7388,14 +7391,7 @@ br $while-continue|0 end end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - return + br $folding-inner0 end unreachable end @@ -7850,21 +7846,23 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - if (result i32) + block $__inlined_func$~lib/string/String#charCodeAt (result i32) + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const -1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + br_if $__inlined_func$~lib/string/String#charCodeAt + drop local.get $0 i32.load16_u - else - i32.const -1 end i32.const 104 i32.ne @@ -7878,54 +7876,53 @@ end global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $0 + local.tee $3 i32.store - block $__inlined_func$~lib/string/String#codePointAt (result i32) - i32.const -1 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/string/String#codePointAt + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 1 i32.le_u br_if $__inlined_func$~lib/string/String#codePointAt - drop local.get $3 + i32.load16_u offset=2 + local.tee $5 + local.set $0 + local.get $4 i32.const 2 i32.eq - local.get $0 - i32.load16_u offset=2 - local.tee $3 + local.get $5 i32.const 64512 i32.and i32.const 55296 i32.ne i32.or - if - local.get $3 - br $__inlined_func$~lib/string/String#codePointAt - end + br_if $__inlined_func$~lib/string/String#codePointAt local.get $3 - local.get $0 i32.load16_u offset=4 - local.tee $0 + local.tee $3 i32.const 64512 i32.and i32.const 56320 i32.ne br_if $__inlined_func$~lib/string/String#codePointAt - drop - local.get $0 local.get $3 + local.get $0 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub + local.set $0 end + local.get $0 i32.const 105 i32.ne if @@ -8403,15 +8400,15 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/string/str - local.tee $3 - i32.store - local.get $0 - i32.const 2176 - i32.store offset=4 block $__inlined_func$~lib/string/String#startsWith (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/string/str + local.tee $3 + i32.store + local.get $0 + i32.const 2176 + i32.store offset=4 i32.const 0 local.get $3 i32.const 20 @@ -8420,27 +8417,26 @@ i32.const 1 i32.shr_u local.tee $0 + i32.const 0 + local.get $0 local.get $0 i32.const 0 i32.gt_s select - local.set $4 - i32.const 0 - local.get $0 - local.get $4 + local.tee $0 i32.const 2172 i32.load i32.const 1 i32.shr_u - local.tee $0 + local.tee $4 i32.add i32.lt_s br_if $__inlined_func$~lib/string/String#startsWith drop local.get $3 - local.get $4 - i32.const 2176 local.get $0 + i32.const 2176 + local.get $4 call $~lib/util/string/compareImpl i32.eqz end @@ -8453,44 +8449,47 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.tee $0 - global.get $std/string/str - local.tee $3 - i32.store - local.get $0 - i32.const 2208 - i32.store offset=4 - i32.const 536870910 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 536870910 - i32.gt_s - select - i32.const 2204 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if (result i32) + block $__inlined_func$~lib/string/String#endsWith (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/string/str + local.tee $3 + i32.store + local.get $0 + i32.const 2208 + i32.store offset=4 + i32.const 0 + i32.const 536870910 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - else + i32.shr_u + local.tee $0 + local.get $0 + i32.const 536870910 + i32.gt_s + select + i32.const 2204 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + br_if $__inlined_func$~lib/string/String#endsWith + drop local.get $3 local.get $4 i32.const 2208 local.get $0 call $~lib/util/string/compareImpl + i32.eqz end + i32.eqz if i32.const 0 i32.const 1120 @@ -13703,28 +13702,28 @@ global.get $~lib/memory/__stack_pointer i32.const 65377 call $~lib/string/String.fromCodePoint - local.tee $3 + local.tee $0 i32.store offset=36 global.get $~lib/memory/__stack_pointer i32.const 55296 call $~lib/string/String.fromCodePoint - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store i32.const 56322 call $~lib/string/String.fromCodePoint - local.set $0 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store offset=4 + local.get $4 local.get $5 - local.get $0 call $~lib/string/String#concat - local.tee $0 + local.tee $3 i32.store offset=40 - local.get $3 local.get $0 + local.get $3 call $~lib/string/String.__gt i32.eqz if @@ -21639,15 +21638,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i32.const 0 i32.store - local.get $3 local.get $0 i32.const 2 i32.shl local.tee $4 - local.tee $5 i32.const 0 call $~lib/rt/itcms/__new local.set $3 @@ -21655,9 +21652,10 @@ if local.get $3 local.get $2 - local.get $5 + local.get $4 call $~lib/memory/memory.copy end + local.get $5 local.get $3 i32.store i32.const 16 @@ -21863,6 +21861,10 @@ i32.shl local.tee $3 i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $1 local.get $0 i32.const 20 i32.sub @@ -21871,12 +21873,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.gt_u + local.tee $6 + i32.lt_u i32.or if global.get $~lib/memory/__stack_pointer @@ -21890,17 +21888,17 @@ local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.store - local.get $3 local.get $1 - local.get $4 + local.get $6 i32.sub - local.tee $6 - i32.lt_u + local.tee $5 + local.get $3 + i32.gt_u if local.get $3 - local.get $6 + local.get $5 i32.const 2 i32.sub local.get $3 @@ -21908,36 +21906,36 @@ local.tee $1 i32.mul local.set $7 - local.get $5 + local.get $4 local.get $2 local.get $3 local.get $1 call $~lib/memory/memory.repeat - local.get $5 + local.get $4 local.get $7 i32.add local.get $2 - local.get $6 + local.get $5 local.get $7 i32.sub call $~lib/memory/memory.copy else - local.get $5 + local.get $4 local.get $2 - local.get $6 + local.get $5 call $~lib/memory/memory.copy end + local.get $4 local.get $5 - local.get $6 i32.add local.get $0 - local.get $4 + local.get $6 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 ) (func $~lib/string/String#padEnd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -21972,6 +21970,10 @@ i32.shl local.tee $3 i32.eqz + local.get $1 + i32.const 1 + i32.shl + local.tee $4 local.get $0 i32.const 20 i32.sub @@ -21980,12 +21982,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 - local.get $1 - i32.const 1 - i32.shl local.tee $5 - i32.gt_u + i32.lt_u i32.or if global.get $~lib/memory/__stack_pointer @@ -21996,53 +21994,53 @@ return end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store local.get $1 local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $3 local.get $5 + call $~lib/memory/memory.copy local.get $4 + local.get $5 i32.sub - local.tee $5 - i32.lt_u + local.tee $4 + local.get $3 + i32.gt_u if local.get $3 - local.get $5 + local.get $4 i32.const 2 i32.sub local.get $3 i32.div_u - local.tee $0 + local.tee $6 i32.mul - local.set $6 + local.set $0 local.get $1 - local.get $4 + local.get $5 i32.add - local.tee $4 + local.tee $5 local.get $2 local.get $3 - local.get $0 - call $~lib/memory/memory.repeat - local.get $4 local.get $6 + call $~lib/memory/memory.repeat + local.get $0 + local.get $5 i32.add local.get $2 - local.get $5 - local.get $6 + local.get $4 + local.get $0 i32.sub call $~lib/memory/memory.copy else local.get $1 - local.get $4 + local.get $5 i32.add local.get $2 - local.get $5 + local.get $4 call $~lib/memory/memory.copy end global.get $~lib/memory/__stack_pointer @@ -22236,7 +22234,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.set $1 loop $while-continue|0 local.get $1 @@ -22248,16 +22246,16 @@ i32.const 2 i32.sub i32.load16_u - local.tee $2 + local.tee $3 i32.const 5760 i32.lt_u if - local.get $2 + local.get $3 i32.const 128 i32.or i32.const 160 i32.eq - local.get $2 + local.get $3 i32.const 9 i32.sub i32.const 4 @@ -22266,7 +22264,7 @@ br $__inlined_func$~lib/util/string/isSpace end i32.const 1 - local.get $2 + local.get $3 i32.const -8192 i32.add i32.const 10 @@ -22275,31 +22273,31 @@ drop block $break|0 block $case6|0 - local.get $2 + local.get $3 i32.const 5760 i32.eq br_if $case6|0 - local.get $2 + local.get $3 i32.const 8232 i32.eq br_if $case6|0 - local.get $2 + local.get $3 i32.const 8233 i32.eq br_if $case6|0 - local.get $2 + local.get $3 i32.const 8239 i32.eq br_if $case6|0 - local.get $2 + local.get $3 i32.const 8287 i32.eq br_if $case6|0 - local.get $2 + local.get $3 i32.const 12288 i32.eq br_if $case6|0 - local.get $2 + local.get $3 i32.const 65279 i32.eq br_if $case6|0 @@ -22332,7 +22330,7 @@ return end local.get $1 - local.get $3 + local.get $2 i32.eq if global.get $~lib/memory/__stack_pointer @@ -22795,21 +22793,21 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 - local.get $0 + local.tee $4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 - i32.ge_u + local.tee $3 + i32.le_u if local.get $3 local.get $4 @@ -22919,7 +22917,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) - block $folding-inner0 + block $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -22938,331 +22936,324 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - 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 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 - i32.le_u - if - local.get $3 - local.get $8 - i32.ge_u - if - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - local.set $0 - end - br $folding-inner0 - end - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - local.get $8 - i32.eqz - if - local.get $4 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - i32.const 1 - i32.add - i32.mul - local.get $3 - i32.add + block $folding-inner1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl + i32.shr_u + local.tee $5 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - local.get $6 + i32.shr_u + local.tee $7 + i32.le_u + if + local.get $5 + local.get $7 + i32.ge_u + if + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + br $folding-inner2 + end local.get $2 - local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $4 - local.set $1 - loop $for-loop|0 + i32.shr_u + local.set $3 + local.get $7 + i32.eqz + if + local.get $3 + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer local.get $3 local.get $5 - i32.gt_u - if - local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add + i32.const 1 + i32.add + i32.mul + local.get $5 + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.set $1 + loop $for-loop|0 local.get $5 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.load16_u - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl local.get $6 - i32.add - local.get $2 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/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 + i32.gt_u + if + local.get $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + local.get $6 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $3 + i32.add + local.set $1 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end end + 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 - 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 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store + local.get $7 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + local.get $0 + local.get $5 + call $~lib/memory/memory.copy + loop $while-continue|1 + local.get $0 + local.get $1 + local.get $9 + call $~lib/string/String#indexOf + local.tee $5 + i32.const -1 + i32.xor + if + local.get $5 + i32.const 1 + i32.shl + local.get $4 + i32.add + local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $5 + local.get $7 + i32.add + local.set $9 + br $while-continue|1 + end + end + br $folding-inner1 + end local.get $5 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - loop $while-continue|1 + local.set $4 + loop $while-continue|2 local.get $0 local.get $1 - local.get $10 + local.get $9 call $~lib/string/String#indexOf - local.tee $3 + local.tee $6 i32.const -1 i32.xor if + local.get $10 + if (result i32) + local.get $10 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=4 + end + local.get $4 local.get $3 + local.get $6 + local.get $9 + i32.sub + local.tee $11 + local.get $8 + i32.add + i32.add + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $10 + local.get $4 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $10 + i32.store offset=4 + end + local.get $8 i32.const 1 i32.shl - local.get $5 + local.get $10 + i32.add + local.get $9 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $11 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $8 + local.get $11 + i32.add + local.tee $8 + i32.const 1 + i32.shl + local.get $10 i32.add local.get $2 - local.get $4 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $3 local.get $8 i32.add - local.set $10 - br $while-continue|1 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.set $9 + br $while-continue|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - end - local.get $3 - local.set $5 - loop $while-continue|2 - local.get $0 - local.get $1 local.get $10 - call $~lib/string/String#indexOf - local.tee $7 - i32.const -1 - i32.xor if - local.get $11 - if (result i32) - local.get $11 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - else - i32.const 0 - end - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=4 - end - local.get $5 local.get $4 + local.get $5 local.get $9 - local.get $7 - local.get $10 i32.sub - local.tee $6 - i32.add + local.tee $1 + local.get $8 i32.add i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $5 + local.get $10 + local.get $4 i32.const 1 i32.shl - local.tee $5 + local.tee $4 i32.const 1 i32.shl call $~lib/rt/itcms/__renew - local.tee $11 + local.tee $10 + i32.store offset=4 + end + local.get $1 + if + local.get $8 + i32.const 1 + i32.shl + local.get $10 + i32.add + local.get $9 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + local.get $1 + local.get $8 + i32.add + local.tee $0 + local.get $4 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $10 + local.get $0 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $10 i32.store offset=4 end - local.get $9 - i32.const 1 - i32.shl - local.get $11 - i32.add - local.get $10 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - local.get $9 - i32.add - local.tee $6 - i32.const 1 - i32.shl - local.get $11 - i32.add - local.get $2 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/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 $5 - local.get $9 - local.get $3 - local.get $10 - i32.sub - local.tee $1 - i32.add - i32.lt_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=4 - end - local.get $1 - if - local.get $9 - i32.const 1 - i32.shl - local.get $11 + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer local.get $10 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $5 - local.get $1 - local.get $9 - i32.add - local.tee $0 - i32.gt_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=4 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return + br $folding-inner2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 return end global.get $~lib/memory/__stack_pointer @@ -23519,9 +23510,10 @@ i32.gt_s select local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s + local.get $4 + i32.lt_s select i32.const 1 i32.shl @@ -23639,12 +23631,12 @@ local.get $0 ) (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (local $2 i64) (local $3 i64) - (local $4 i64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 i64) - (local $7 i64) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -23695,72 +23687,72 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $5 + local.tee $4 select - local.set $2 + local.set $7 local.get $1 i32.const 10 i32.eq if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $7 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $7 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $7 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $7 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $7 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $7 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $7 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $7 i32.const 100000000 i32.ge_u i32.add end end - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $2 local.get $0 + local.get $7 + local.get $1 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -23768,9 +23760,9 @@ i32.eq if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 31 - local.get $2 + local.get $7 i32.clz i32.sub i32.const 2 @@ -23778,30 +23770,30 @@ i32.const 1 i32.add i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $2 + local.get $7 i64.extend_i32_u - local.set $3 + local.set $2 loop $while-continue|0 - local.get $0 + local.get $1 i32.const 2 i32.ge_u if - local.get $0 + local.get $1 i32.const 2 i32.sub - local.tee $0 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $0 i32.add - local.get $3 + local.get $2 i32.wrap_i64 i32.const 255 i32.and @@ -23811,19 +23803,19 @@ i32.add i32.load i32.store - local.get $3 + local.get $2 i64.const 8 i64.shr_u - local.set $3 + local.set $2 br $while-continue|0 end end - local.get $0 + local.get $1 i32.const 1 i32.and if - local.get $1 - local.get $3 + local.get $0 + local.get $2 i32.wrap_i64 i32.const 6 i32.shl @@ -23835,23 +23827,22 @@ else global.get $~lib/memory/__stack_pointer block $__inlined_func$~lib/util/number/ulog_base (result i32) - local.get $2 + local.get $7 i64.extend_i32_u local.tee $6 - local.set $3 + local.set $2 local.get $1 - local.tee $2 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $3 + local.get $2 i64.clz i32.wrap_i64 i32.sub i32.const 31 - local.get $2 + local.get $1 i32.clz i32.sub i32.div_u @@ -23859,25 +23850,25 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $2 + local.get $1 i64.extend_i32_s - local.tee $7 - local.set $4 + local.tee $5 + local.set $3 i32.const 1 local.set $0 loop $while-continue|00 + local.get $2 local.get $3 - local.get $4 i64.ge_u if + local.get $2 local.get $3 - local.get $4 i64.div_u - local.set $3 - local.get $4 - local.get $4 + local.set $2 + local.get $3 + local.get $3 i64.mul - local.set $4 + local.set $3 local.get $0 i32.const 1 i32.shl @@ -23886,14 +23877,14 @@ end end loop $while-continue|1 - local.get $3 + local.get $2 i64.const 0 i64.ne if - local.get $3 - local.get $7 + local.get $2 + local.get $5 i64.div_u - local.set $3 + local.set $2 local.get $0 i32.const 1 i32.add @@ -23905,25 +23896,25 @@ i32.const 1 i32.sub end - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $7 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $6 local.get $0 - local.get $2 + local.get $6 + local.get $7 + local.get $1 call $~lib/util/number/utoa64_any_core end end - local.get $5 + local.get $4 if - local.get $1 + local.get $0 i32.const 45 i32.store16 end @@ -23931,7 +23922,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24033,16 +24024,16 @@ i32.add end end - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $0 local.get $2 + local.get $0 + local.get $1 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -24058,30 +24049,28 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store local.get $0 i64.extend_i32_u local.set $3 - local.get $2 - local.set $0 loop $while-continue|0 - local.get $0 + local.get $1 i32.const 2 i32.ge_u if - local.get $0 + local.get $1 i32.const 2 i32.sub - local.tee $0 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add local.get $3 i32.wrap_i64 @@ -24100,11 +24089,11 @@ br $while-continue|0 end end - local.get $0 + local.get $1 i32.const 1 i32.and if - local.get $1 + local.get $2 local.get $3 i32.wrap_i64 i32.const 6 @@ -24119,10 +24108,9 @@ block $__inlined_func$~lib/util/number/ulog_base (result i32) local.get $0 i64.extend_i32_u - local.tee $5 + local.tee $6 local.set $3 local.get $1 - local.tee $2 i32.popcnt i32.const 1 i32.eq @@ -24133,7 +24121,7 @@ i32.wrap_i64 i32.sub i32.const 31 - local.get $2 + local.get $1 i32.clz i32.sub i32.div_u @@ -24141,9 +24129,9 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $2 + local.get $1 i64.extend_i32_s - local.tee $6 + local.tee $5 local.set $4 i32.const 1 local.set $0 @@ -24173,7 +24161,7 @@ i64.ne if local.get $3 - local.get $6 + local.get $5 i64.div_u local.set $3 local.get $0 @@ -24192,12 +24180,12 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $5 - local.get $0 local.get $2 + local.get $6 + local.get $0 + local.get $1 call $~lib/util/number/utoa64_any_core end end @@ -24205,7 +24193,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i64) @@ -24974,22 +24962,22 @@ call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - i32.const 22864 local.get $1 + i32.const 22864 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index b3930647c5..61749a24f2 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -286,19 +286,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -910,38 +908,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 19084 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -957,221 +1028,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 19084 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 19084 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 19084 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 19084 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1543,11 +1539,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $4 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1558,19 +1554,20 @@ call $~lib/builtins/abort unreachable end + local.get $4 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select - local.tee $3 + local.tee $5 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1578,7 +1575,7 @@ memory.size local.tee $2 i32.const 4 - local.get $5 + local.get $4 i32.load offset=1568 local.get $2 i32.const 16 @@ -1589,16 +1586,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $3 + local.get $5 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $3 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 536870910 i32.lt_u select @@ -1609,16 +1606,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1626,7 +1623,7 @@ unreachable end end - local.get $5 + local.get $4 local.get $2 i32.const 16 i32.shl @@ -1634,8 +1631,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $4 local.get $5 - local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1652,7 +1649,7 @@ i32.load i32.const -4 i32.and - local.get $3 + local.get $5 i32.lt_u if i32.const 0 @@ -1662,13 +1659,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $6 - local.get $3 + local.set $3 + local.get $5 i32.const 4 i32.add i32.const 15 @@ -1681,40 +1678,40 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $5 i32.sub - local.tee $4 + local.tee $6 i32.const 16 i32.ge_u if local.get $2 - local.get $6 + local.get $3 i32.const 2 i32.and - local.get $3 + local.get $5 i32.or i32.store - local.get $3 + local.get $5 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $4 + local.get $6 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $6 + local.get $3 i32.const -2 i32.and i32.store @@ -1744,8 +1741,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -1976,6 +1973,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -2010,47 +2008,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - 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 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + 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 loop $while-continue|1 local.get $0 local.tee $3 @@ -2061,17 +2059,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -2084,70 +2081,72 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/map/Map#find (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $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 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $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 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + block $__inlined_func$~lib/map/Map#find loop $while-continue|0 local.get $0 if local.get $0 - local.get $0 + local.tee $1 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else + local.get $2 local.get $1 - local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - drop - local.get $2 + local.get $0 i32.const -2 i32.and local.set $0 @@ -2155,8 +2154,9 @@ end end i32.const 0 + local.set $1 end - local.tee $0 + local.get $1 i32.eqz if i32.const 1648 @@ -2166,7 +2166,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) @@ -3046,25 +3046,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/string/String#concat (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 2700 - i32.lt_s - if - i32.const 19104 - i32.const 19152 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat local.get $0 i32.const 20 i32.sub @@ -3073,7 +3073,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -3082,9 +3082,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 - i32.add local.tee $4 + i32.add + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3092,30 +3092,31 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1824 + local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 - local.get $0 local.get $2 + local.get $0 + local.get $3 call $~lib/memory/memory.copy local.get $2 - local.get $4 + local.get $3 i32.add local.get $1 - local.get $3 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 end + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -3209,7 +3210,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|03 + loop $while-continue|01 local.get $0 local.get $2 i32.lt_u @@ -3232,7 +3233,7 @@ i32.const 12 i32.add local.set $0 - br $while-continue|03 + br $while-continue|01 end end br $folding-inner0 @@ -3343,11 +3344,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3396,7 +3397,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3456,7 +3457,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3532,9 +3533,9 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $2 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3543,10 +3544,10 @@ call $~lib/util/hash/HASH<~lib/string/String> local.tee $6 call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $0 + local.tee $1 if - local.get $0 local.get $1 + local.get $0 i32.store offset=4 else local.get $5 @@ -3583,26 +3584,26 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 local.get $7 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3 @@ -3623,7 +3624,7 @@ i32.add local.set $10 local.get $3 - local.set $0 + local.set $1 loop $while-continue|0 local.get $4 local.get $10 @@ -3640,14 +3641,14 @@ i32.load local.tee $11 i32.store offset=8 - local.get $0 + local.get $1 local.get $11 i32.store - local.get $0 + local.get $1 local.get $4 i32.load offset=4 i32.store offset=4 - local.get $0 + local.get $1 local.get $11 call $~lib/util/hash/HASH<~lib/string/String> local.get $7 @@ -3660,12 +3661,12 @@ i32.load i32.store offset=8 local.get $11 - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 12 i32.add - local.set $0 + local.set $1 end local.get $4 i32.const 12 @@ -3712,7 +3713,7 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store local.get $5 local.get $5 @@ -3724,17 +3725,17 @@ local.get $3 i32.const 12 i32.mul - local.get $0 + local.get $1 i32.add - local.tee $0 + local.tee $1 i32.const 1056 i32.store local.get $5 i32.const 1056 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link - local.get $0 local.get $1 + local.get $0 i32.store offset=4 local.get $5 local.get $5 @@ -3742,7 +3743,7 @@ i32.const 1 i32.add i32.store offset=20 - local.get $0 + local.get $1 local.get $5 i32.load local.get $5 @@ -3756,7 +3757,7 @@ i32.load i32.store offset=8 local.get $3 - local.get $0 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer @@ -3764,24 +3765,24 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $~lib/symbol/idToString local.tee $5 i32.store - local.get $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 2700 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store local.get $5 i32.load - local.get $1 + local.get $0 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -3791,23 +3792,23 @@ i32.const 668265263 i32.mul local.tee $0 - local.get $0 i32.const 15 i32.shr_u + local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 - local.get $0 i32.const 13 i32.shr_u + local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 - local.get $0 i32.const 16 i32.shr_u + local.get $0 i32.xor local.tee $6 local.get $5 @@ -3819,28 +3820,28 @@ i32.load local.set $0 block $__inlined_func$~lib/map/Map#find - loop $while-continue|02 + loop $while-continue|06 local.get $0 if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $1 i32.const -2 i32.and local.set $0 - br $while-continue|02 + br $while-continue|06 end end i32.const 0 @@ -3890,7 +3891,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3915,37 +3916,37 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=4 local.get $5 i32.load offset=8 - local.tee $4 + local.tee $1 local.get $5 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $10 - local.get $3 + local.get $4 local.set $0 - loop $while-continue|03 - local.get $4 + loop $while-continue|00 + local.get $1 local.get $10 i32.ne if - local.get $4 + local.get $1 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $4 + local.get $1 i32.load local.tee $11 i32.store local.get $0 - local.get $4 + local.get $1 i32.load offset=4 i32.store offset=4 local.get $0 @@ -3959,23 +3960,23 @@ i32.const 668265263 i32.mul local.tee $11 - local.get $11 i32.const 15 i32.shr_u + local.get $11 i32.xor i32.const -2048144777 i32.mul local.tee $11 - local.get $11 i32.const 13 i32.shr_u + local.get $11 i32.xor i32.const -1028477379 i32.mul local.tee $11 - local.get $11 i32.const 16 i32.shr_u + local.get $11 i32.xor local.get $7 i32.and @@ -3994,11 +3995,11 @@ i32.add local.set $0 end - local.get $4 + local.get $1 i32.const 12 i32.add - local.set $4 - br $while-continue|03 + local.set $1 + br $while-continue|00 end end local.get $5 @@ -4015,12 +4016,12 @@ local.get $7 i32.store offset=4 local.get $5 - local.get $3 + local.get $4 i32.store offset=8 - local.get $3 + local.get $4 if local.get $5 - local.get $3 + local.get $4 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -4044,17 +4045,17 @@ local.get $5 local.get $5 i32.load offset=16 - local.tee $3 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $3 + local.get $1 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $1 + local.get $3 i32.store local.get $0 i32.const 1056 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 8c5d167c33..bd3f8b1c8f 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3,9 +3,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) @@ -846,19 +846,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -1520,38 +1518,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 33012 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1567,177 +1638,102 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 33012 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 33012 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 33012 - 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 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1869,7 +1865,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 local.get $1 i32.const 1073741820 i32.gt_u @@ -1881,6 +1876,7 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 12 local.get $1 i32.const 19 @@ -1990,7 +1986,7 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $4 + local.set $2 local.get $3 i32.const 4 i32.add @@ -2004,17 +2000,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const -4 i32.and local.get $3 i32.sub - local.tee $2 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $2 i32.const 2 i32.and local.get $3 @@ -2025,19 +2021,19 @@ i32.const 4 i32.add i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $2 i32.const -2 i32.and i32.store @@ -2325,26 +2321,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 - local.get $3 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -4861,6 +4857,7 @@ (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load offset=8 local.get $1 @@ -4872,15 +4869,16 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $4 loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.get $2 call $~lib/typedarray/Int8Array#__get + local.set $3 local.get $1 i32.load offset=12 local.get $2 @@ -4898,6 +4896,7 @@ i32.load offset=4 i32.add i32.load8_s + local.get $3 i32.ne if i32.const 0 @@ -6307,94 +6306,74 @@ f64.const 0 f64.eq ) - (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) + (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i64) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $5 + (local $7 i64) + local.get $1 i32.const 1 i32.gt_u if - local.get $5 + local.get $1 i32.const 1 i32.shr_u local.set $4 - local.get $5 + local.get $1 i32.const 8 i32.sub - local.set $6 + local.set $5 loop $while-continue|0 local.get $4 - local.get $1 + local.get $2 i32.const 7 i32.add i32.gt_u if - local.get $1 - local.get $3 + local.get $0 + local.get $2 i32.add - local.tee $7 + local.tee $6 i64.load - local.tee $2 + local.tee $3 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $2 + local.get $3 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 - local.set $2 - local.get $7 - local.get $3 + local.set $3 local.get $6 + local.get $0 + local.get $5 i32.add - local.get $1 + local.get $2 i32.sub - local.tee $7 + local.tee $6 i64.load - local.tee $8 + local.tee $7 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $8 + local.get $7 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.tee $8 + local.tee $7 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $8 + local.get $7 i64.const 281470681808895 i64.and i64.const 16 @@ -6403,52 +6382,63 @@ i64.const 32 i64.rotr i64.store - local.get $7 - local.get $2 + local.get $6 + 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 + local.get $2 i32.const 8 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $5 + local.get $1 i32.const 1 i32.sub - local.set $5 + local.set $1 loop $while-continue|1 - local.get $1 + local.get $2 local.get $4 i32.lt_u if - local.get $1 - local.get $3 + local.get $0 + local.get $2 i32.add - local.tee $6 + local.tee $5 i32.load8_u - local.set $7 - local.get $6 + local.set $6 local.get $5 local.get $1 + local.get $2 i32.sub - local.get $3 + local.get $0 i32.add - local.tee $6 + local.tee $5 i32.load8_u i32.store8 + local.get $5 local.get $6 - local.get $7 i32.store8 - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|1 end end end - local.get $0 ) (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) (local $1 i32) @@ -6580,64 +6570,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 7728 i32.store - local.get $2 + local.get $1 i32.const 7740 i32.load - local.tee $3 + local.tee $1 call $~lib/typedarray/Int8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 i32.lt_s if - local.get $2 - local.get $1 + local.get $4 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end + i32.const 0 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.eqz @@ -6666,26 +6658,26 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|03 + local.set $2 + loop $while-continue|02 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -6695,7 +6687,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|03 + br $while-continue|02 end end i32.const -1 @@ -6716,37 +6708,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|07 + local.set $2 + loop $while-continue|05 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|07 + br $while-continue|05 end end i32.const -1 @@ -6767,37 +6759,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|011 + local.set $2 + loop $while-continue|08 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|08 end end i32.const -1 @@ -6818,37 +6810,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|015 + local.set $2 + loop $while-continue|011 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|015 + br $while-continue|011 end end i32.const -1 @@ -6869,37 +6861,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 3 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|019 + local.set $2 + loop $while-continue|014 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|019 + br $while-continue|014 end end i32.const -1 @@ -6920,37 +6912,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 4 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|023 + local.set $2 + loop $while-continue|017 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|017 end end i32.const -1 @@ -6971,37 +6963,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 10 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|027 + local.set $2 + loop $while-continue|020 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|027 + br $while-continue|020 end end i32.const -1 @@ -7019,18 +7011,18 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 - local.get $2 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.get $4 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -7039,13 +7031,13 @@ i32.const 0 i32.gt_s select - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|031 - local.get $0 - local.get $3 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $2 i32.lt_s if local.get $0 @@ -7054,18 +7046,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|031 + local.set $1 + br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -7078,44 +7070,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $0 + local.get $4 i32.load offset=8 - local.set $3 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 - i32.load offset=8 - local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $0 local.get $2 - local.get $3 i32.add local.get $2 i32.const 1 i32.sub - local.get $3 + local.get $0 + local.get $0 local.get $2 - local.get $3 - i32.le_s + i32.ge_s select - local.get $3 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|00 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.eqz @@ -7141,42 +7131,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|06 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 11 @@ -7205,42 +7195,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|012 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 255 @@ -7269,42 +7259,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 3 @@ -7334,8 +7324,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $0 - local.tee $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -7349,17 +7338,17 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|033 + local.set $2 + loop $while-continue|024 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7369,7 +7358,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|024 end end i32.const -1 @@ -7388,12 +7377,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 local.get $0 i32.const 1 i32.sub @@ -7403,27 +7392,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|037 + local.set $2 + loop $while-continue|027 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|037 + br $while-continue|027 end end i32.const -1 @@ -7442,12 +7431,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $0 i32.const 1 i32.sub @@ -7457,27 +7446,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|041 + local.set $2 + loop $while-continue|030 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|041 + br $while-continue|030 end end i32.const -1 @@ -7496,12 +7485,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 local.get $0 i32.const 1 i32.sub @@ -7511,27 +7500,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|045 + local.set $2 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|045 + br $while-continue|033 end end i32.const -1 @@ -7549,22 +7538,22 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $2 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + local.get $4 i32.load offset=8 - local.tee $1 + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|049 - local.get $0 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|036 + local.get $1 i32.const 0 i32.ge_s if @@ -7574,18 +7563,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|049 + local.set $1 + br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -7597,22 +7586,22 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 - local.get $2 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 + local.get $4 i32.load offset=8 - local.tee $1 + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 + local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|053 - local.get $0 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|039 + local.get $1 i32.const 0 i32.ge_s if @@ -7622,18 +7611,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|053 + local.set $1 + br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7645,7 +7634,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 4 i32.const 9 call $~lib/typedarray/Int8Array#subarray @@ -7655,7 +7644,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 local.get $4 i32.load offset=8 local.tee $3 @@ -7664,11 +7653,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|057 + loop $while-continue|042 local.get $0 local.get $3 i32.lt_s @@ -7680,12 +7669,12 @@ i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|042 end end i32.const -1 @@ -7706,7 +7695,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 local.get $4 i32.load offset=8 local.tee $3 @@ -7715,11 +7704,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|061 + loop $while-continue|045 local.get $0 local.get $3 i32.lt_s @@ -7731,12 +7720,12 @@ i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|061 + br $while-continue|045 end end i32.const -1 @@ -7755,7 +7744,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 local.get $4 i32.load offset=8 local.tee $3 @@ -7764,11 +7753,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|065 + loop $while-continue|048 local.get $0 local.get $3 i32.lt_s @@ -7780,12 +7769,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|065 + br $while-continue|048 end end i32.const -1 @@ -7806,7 +7795,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 local.get $4 i32.load offset=8 local.tee $3 @@ -7815,11 +7804,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|069 + loop $while-continue|051 local.get $0 local.get $3 i32.lt_s @@ -7831,12 +7820,12 @@ i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|069 + br $while-continue|051 end end i32.const -1 @@ -7857,7 +7846,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 local.get $4 i32.load offset=8 local.tee $3 @@ -7866,11 +7855,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|073 + loop $while-continue|054 local.get $0 local.get $3 i32.lt_s @@ -7882,12 +7871,12 @@ i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|073 + br $while-continue|054 end end i32.const -1 @@ -7908,7 +7897,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 local.get $4 i32.load offset=8 local.tee $3 @@ -7917,11 +7906,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|077 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -7933,12 +7922,12 @@ i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|077 + br $while-continue|057 end end i32.const -1 @@ -7959,7 +7948,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 local.get $4 i32.load offset=8 local.tee $3 @@ -7968,11 +7957,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|081 + loop $while-continue|060 local.get $0 local.get $3 i32.lt_s @@ -7984,12 +7973,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|081 + br $while-continue|060 end end i32.const -1 @@ -8007,10 +7996,10 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 local.get $4 i32.load offset=8 local.tee $3 @@ -8019,34 +8008,34 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|085 - local.get $0 + loop $while-continue|063 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|085 + local.set $1 + br $while-continue|063 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -8084,65 +8073,67 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 7728 i32.store - local.get $2 + local.get $1 i32.const 7740 i32.load - local.tee $3 + local.tee $1 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 i32.lt_s if - local.get $2 - local.get $1 + local.get $4 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end + i32.const 0 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.eqz @@ -8171,26 +8162,26 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|03 + local.set $2 + loop $while-continue|02 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -8200,7 +8191,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|03 + br $while-continue|02 end end i32.const -1 @@ -8221,37 +8212,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|07 + local.set $2 + loop $while-continue|05 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|07 + br $while-continue|05 end end i32.const -1 @@ -8272,37 +8263,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|011 + local.set $2 + loop $while-continue|08 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|08 end end i32.const -1 @@ -8323,37 +8314,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|015 + local.set $2 + loop $while-continue|011 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|015 + br $while-continue|011 end end i32.const -1 @@ -8374,37 +8365,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 3 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|019 + local.set $2 + loop $while-continue|014 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|019 + br $while-continue|014 end end i32.const -1 @@ -8425,37 +8416,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 4 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|023 + local.set $2 + loop $while-continue|017 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|017 end end i32.const -1 @@ -8476,37 +8467,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 10 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|027 + local.set $2 + loop $while-continue|020 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|027 + br $while-continue|020 end end i32.const -1 @@ -8524,18 +8515,18 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $2 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $4 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -8544,13 +8535,13 @@ i32.const 0 i32.gt_s select - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|031 - local.get $0 - local.get $3 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $2 i32.lt_s if local.get $0 @@ -8559,18 +8550,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|031 + local.set $1 + br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -8583,44 +8574,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $0 + local.get $4 i32.load offset=8 - local.set $3 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 - i32.load offset=8 - local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 local.get $2 - local.get $3 i32.add local.get $2 i32.const 1 i32.sub - local.get $3 + local.get $0 + local.get $0 local.get $2 - local.get $3 - i32.le_s + i32.ge_s select - local.get $3 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|00 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.eqz @@ -8646,42 +8635,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|06 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 11 @@ -8710,42 +8699,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|012 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 255 @@ -8774,42 +8763,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 3 @@ -8839,8 +8828,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $0 - local.tee $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -8854,17 +8842,17 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|033 + local.set $2 + loop $while-continue|024 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -8874,7 +8862,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|024 end end i32.const -1 @@ -8893,12 +8881,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 local.get $0 i32.const 1 i32.sub @@ -8908,27 +8896,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|037 + local.set $2 + loop $while-continue|027 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|037 + br $while-continue|027 end end i32.const -1 @@ -8947,12 +8935,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $0 i32.const 1 i32.sub @@ -8962,27 +8950,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|041 + local.set $2 + loop $while-continue|030 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|041 + br $while-continue|030 end end i32.const -1 @@ -9001,12 +8989,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 local.get $0 i32.const 1 i32.sub @@ -9016,27 +9004,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|045 + local.set $2 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|045 + br $while-continue|033 end end i32.const -1 @@ -9054,22 +9042,22 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $4 i32.load offset=8 - local.tee $1 + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|049 - local.get $0 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|036 + local.get $1 i32.const 0 i32.ge_s if @@ -9079,18 +9067,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|049 + local.set $1 + br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -9102,22 +9090,22 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 - local.get $2 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $4 i32.load offset=8 - local.tee $1 + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|053 - local.get $0 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|039 + local.get $1 i32.const 0 i32.ge_s if @@ -9127,18 +9115,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|053 + local.set $1 + br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -9150,7 +9138,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 9 call $~lib/typedarray/Uint8Array#subarray local.tee $4 @@ -9159,7 +9147,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $4 i32.load offset=8 local.tee $3 @@ -9168,11 +9156,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|057 + loop $while-continue|042 local.get $0 local.get $3 i32.lt_s @@ -9184,12 +9172,12 @@ i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|042 end end i32.const -1 @@ -9210,7 +9198,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $4 i32.load offset=8 local.tee $3 @@ -9219,11 +9207,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|061 + loop $while-continue|045 local.get $0 local.get $3 i32.lt_s @@ -9235,12 +9223,12 @@ i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|061 + br $while-continue|045 end end i32.const -1 @@ -9259,7 +9247,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $4 i32.load offset=8 local.tee $3 @@ -9268,11 +9256,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|065 + loop $while-continue|048 local.get $0 local.get $3 i32.lt_s @@ -9284,12 +9272,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|065 + br $while-continue|048 end end i32.const -1 @@ -9310,7 +9298,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $4 i32.load offset=8 local.tee $3 @@ -9319,11 +9307,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|069 + loop $while-continue|051 local.get $0 local.get $3 i32.lt_s @@ -9335,12 +9323,12 @@ i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|069 + br $while-continue|051 end end i32.const -1 @@ -9361,7 +9349,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $4 i32.load offset=8 local.tee $3 @@ -9370,11 +9358,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|073 + loop $while-continue|054 local.get $0 local.get $3 i32.lt_s @@ -9386,12 +9374,12 @@ i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|073 + br $while-continue|054 end end i32.const -1 @@ -9412,7 +9400,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $4 i32.load offset=8 local.tee $3 @@ -9421,11 +9409,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|077 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -9437,12 +9425,12 @@ i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|077 + br $while-continue|057 end end i32.const -1 @@ -9463,7 +9451,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $4 i32.load offset=8 local.tee $3 @@ -9472,11 +9460,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|081 + loop $while-continue|060 local.get $0 local.get $3 i32.lt_s @@ -9488,12 +9476,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|081 + br $while-continue|060 end end i32.const -1 @@ -9511,10 +9499,10 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 local.get $4 i32.load offset=8 local.tee $3 @@ -9523,34 +9511,34 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|085 - local.get $0 + loop $while-continue|063 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|085 + local.set $1 + br $while-continue|063 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -9588,65 +9576,67 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $1 i32.const 7728 i32.store - local.get $2 + local.get $1 i32.const 7740 i32.load - local.tee $3 + local.tee $1 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 i32.lt_s if - local.get $2 - local.get $1 + local.get $4 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end + i32.const 0 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.eqz @@ -9675,26 +9665,26 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|03 + local.set $2 + loop $while-continue|02 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -9704,7 +9694,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|03 + br $while-continue|02 end end i32.const -1 @@ -9725,37 +9715,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|07 + local.set $2 + loop $while-continue|05 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|07 + br $while-continue|05 end end i32.const -1 @@ -9776,37 +9766,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|011 + local.set $2 + loop $while-continue|08 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|08 end end i32.const -1 @@ -9827,37 +9817,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|015 + local.set $2 + loop $while-continue|011 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|015 + br $while-continue|011 end end i32.const -1 @@ -9878,37 +9868,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 3 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|019 + local.set $2 + loop $while-continue|014 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|019 + br $while-continue|014 end end i32.const -1 @@ -9929,37 +9919,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 4 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|023 + local.set $2 + loop $while-continue|017 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|017 end end i32.const -1 @@ -9980,37 +9970,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 10 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|027 + local.set $2 + loop $while-continue|020 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|027 + br $while-continue|020 end end i32.const -1 @@ -10028,18 +10018,18 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $2 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $4 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -10048,13 +10038,13 @@ i32.const 0 i32.gt_s select - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|031 - local.get $0 - local.get $3 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|023 + local.get $1 + local.get $2 i32.lt_s if local.get $0 @@ -10063,18 +10053,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|031 + local.set $1 + br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -10087,44 +10077,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $0 + local.get $4 i32.load offset=8 - local.set $3 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 - i32.load offset=8 - local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 local.get $2 - local.get $3 i32.add local.get $2 i32.const 1 i32.sub - local.get $3 + local.get $0 + local.get $0 local.get $2 - local.get $3 - i32.le_s + i32.ge_s select - local.get $3 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|00 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.eqz @@ -10150,42 +10138,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|06 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 11 @@ -10214,42 +10202,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|012 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 255 @@ -10278,42 +10266,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 - local.tee $3 - local.set $2 + local.tee $2 + local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $0 + local.get $0 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 - local.set $2 + local.set $0 loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if + local.get $0 local.get $1 - local.get $2 i32.add i32.load8_u i32.const 3 @@ -10343,8 +10331,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $0 - local.tee $2 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz @@ -10358,17 +10345,17 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|033 + local.set $2 + loop $while-continue|024 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10378,7 +10365,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|024 end end i32.const -1 @@ -10397,12 +10384,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 local.get $0 i32.const 1 i32.sub @@ -10412,27 +10399,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|037 + local.set $2 + loop $while-continue|027 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|037 + br $while-continue|027 end end i32.const -1 @@ -10451,12 +10438,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $0 i32.const 1 i32.sub @@ -10466,27 +10453,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|041 + local.set $2 + loop $while-continue|030 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|041 + br $while-continue|030 end end i32.const -1 @@ -10505,12 +10492,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + local.get $4 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 local.get $0 i32.const 1 i32.sub @@ -10520,27 +10507,27 @@ i32.le_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|045 + local.set $2 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $3 + local.get $2 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|045 + br $while-continue|033 end end i32.const -1 @@ -10558,22 +10545,22 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $4 i32.load offset=8 - local.tee $1 + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|049 - local.get $0 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|036 + local.get $1 i32.const 0 i32.ge_s if @@ -10583,18 +10570,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|049 + local.set $1 + br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -10606,22 +10593,22 @@ unreachable end i32.const -1 - local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 - local.get $2 + local.set $1 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $4 i32.load offset=8 - local.tee $1 + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 - i32.load offset=4 local.set $1 - loop $while-continue|053 - local.get $0 + local.get $4 + i32.load offset=4 + local.set $0 + loop $while-continue|039 + local.get $1 i32.const 0 i32.ge_s if @@ -10631,18 +10618,18 @@ i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|053 + local.set $1 + br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -10654,7 +10641,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#subarray local.tee $4 @@ -10663,7 +10650,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $4 i32.load offset=8 local.tee $3 @@ -10672,11 +10659,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|057 + loop $while-continue|042 local.get $0 local.get $3 i32.lt_s @@ -10688,12 +10675,12 @@ i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|042 end end i32.const -1 @@ -10714,7 +10701,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $4 i32.load offset=8 local.tee $3 @@ -10723,11 +10710,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|061 + loop $while-continue|045 local.get $0 local.get $3 i32.lt_s @@ -10739,12 +10726,12 @@ i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|061 + br $while-continue|045 end end i32.const -1 @@ -10763,7 +10750,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $4 i32.load offset=8 local.tee $3 @@ -10772,11 +10759,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|065 + loop $while-continue|048 local.get $0 local.get $3 i32.lt_s @@ -10788,12 +10775,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|065 + br $while-continue|048 end end i32.const -1 @@ -10814,7 +10801,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $4 i32.load offset=8 local.tee $3 @@ -10823,11 +10810,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|069 + loop $while-continue|051 local.get $0 local.get $3 i32.lt_s @@ -10839,12 +10826,12 @@ i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|069 + br $while-continue|051 end end i32.const -1 @@ -10865,7 +10852,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $4 i32.load offset=8 local.tee $3 @@ -10874,11 +10861,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|073 + loop $while-continue|054 local.get $0 local.get $3 i32.lt_s @@ -10890,12 +10877,12 @@ i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|073 + br $while-continue|054 end end i32.const -1 @@ -10916,7 +10903,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $4 i32.load offset=8 local.tee $3 @@ -10925,11 +10912,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|077 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -10941,12 +10928,12 @@ i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|077 + br $while-continue|057 end end i32.const -1 @@ -10967,7 +10954,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $4 i32.load offset=8 local.tee $3 @@ -10976,11 +10963,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|081 + loop $while-continue|060 local.get $0 local.get $3 i32.lt_s @@ -10992,12 +10979,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|081 + br $while-continue|060 end end i32.const -1 @@ -11015,10 +11002,10 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 local.get $4 i32.load offset=8 local.tee $3 @@ -11027,34 +11014,34 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|085 - local.get $0 + loop $while-continue|063 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|085 + local.set $1 + br $while-continue|063 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11155,7 +11142,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -11172,81 +11158,84 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $4 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $3 - local.get $1 + local.get $4 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.extend16_s call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|0 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -11256,46 +11245,49 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|02 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11307,46 +11299,49 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|05 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11358,46 +11353,49 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|08 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11409,50 +11407,50 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|011 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11464,50 +11462,50 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 3 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|014 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -11519,50 +11517,50 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 4 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|017 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11574,50 +11572,50 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 10 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|020 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -11629,20 +11627,20 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $4 + local.get $2 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $4 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -11652,25 +11650,24 @@ i32.gt_s select local.set $1 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $0 loop $while-continue|023 local.get $1 - local.get $4 + local.get $2 i32.lt_s if local.get $1 - local.tee $0 i32.const 1 i32.shl - local.get $5 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add local.set $1 @@ -11678,9 +11675,9 @@ end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -11693,7 +11690,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const 0 call $~lib/typedarray/Int16Array#lastIndexOf@varargs if @@ -11706,7 +11703,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const 11 call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 @@ -11721,7 +11718,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const -1 call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 @@ -11736,7 +11733,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const 3 call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const 3 @@ -11752,7 +11749,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -11767,19 +11764,20 @@ i32.const 4 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 + local.get $4 + i32.load offset=4 + local.set $2 loop $while-continue|024 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -11788,7 +11786,7 @@ local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|024 end end @@ -11808,14 +11806,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 local.get $0 i32.const 1 i32.sub @@ -11824,29 +11822,30 @@ i32.const 3 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 - loop $while-continue|03 - local.get $1 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|03 + local.set $0 + br $while-continue|027 end end i32.const -1 @@ -11865,14 +11864,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 local.get $0 i32.const 1 i32.sub @@ -11881,29 +11880,30 @@ i32.const 2 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 - loop $while-continue|07 - local.get $1 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|07 + local.set $0 + br $while-continue|030 end end i32.const -1 @@ -11922,14 +11922,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 local.get $0 i32.const 1 i32.sub @@ -11938,29 +11938,30 @@ i32.const 100 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 - loop $while-continue|01125 - local.get $1 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|01125 + local.set $0 + br $while-continue|033 end end i32.const -1 @@ -11979,22 +11980,22 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 local.get $0 i32.const 10 i32.sub local.set $1 - local.get $3 + local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|015 + loop $while-continue|036 local.get $1 i32.const 0 i32.ge_s @@ -12007,12 +12008,12 @@ i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|015 + br $while-continue|036 end end i32.const -1 @@ -12031,22 +12032,22 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 local.get $0 i32.const 11 i32.sub local.set $1 - local.get $3 + local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|019 + loop $while-continue|039 local.get $1 i32.const 0 i32.ge_s @@ -12059,12 +12060,12 @@ i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|019 + br $while-continue|039 end end i32.const -1 @@ -12082,50 +12083,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 9 call $~lib/typedarray/Int16Array#subarray - local.tee $1 + local.tee $4 i32.store offset=8 - i32.const -1 + i32.const 0 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|028 - local.get $2 + local.set $2 + loop $while-continue|042 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|028 + local.set $0 + br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12137,46 +12143,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|031 - local.get $2 + local.set $2 + loop $while-continue|045 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|031 + local.set $0 + br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12186,46 +12195,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|034 - local.get $2 + local.set $2 + loop $while-continue|048 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|034 + local.set $0 + br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -12237,46 +12249,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|037 - local.get $2 + local.set $2 + loop $while-continue|051 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|037 + local.set $0 + br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12288,46 +12303,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|040 - local.get $2 + local.set $2 + loop $while-continue|054 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|040 + local.set $0 + br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12339,46 +12357,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|043 - local.get $2 + local.set $2 + loop $while-continue|057 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|043 + local.set $0 + br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12390,11 +12411,11 @@ unreachable end i32.const 1 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12404,36 +12425,36 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|046 - local.get $2 + local.set $2 + loop $while-continue|060 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|046 + local.set $0 + br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -12445,11 +12466,11 @@ unreachable end i32.const 2 - local.set $2 + local.set $1 i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -12459,30 +12480,30 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 + local.get $4 i32.load offset=4 - local.set $1 - loop $while-continue|049 - local.get $2 + local.set $2 + loop $while-continue|063 + local.get $1 local.get $3 i32.lt_s if - local.get $2 + local.get $1 local.tee $0 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 + local.get $0 i32.const 1 i32.add - local.set $2 - br $while-continue|049 + local.set $1 + br $while-continue|063 end end i32.const -1 @@ -12510,7 +12531,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -12527,82 +12547,85 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7728 i32.store - local.get $0 + local.get $1 i32.const 7740 i32.load - local.tee $0 + local.tee $1 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $4 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $3 - local.get $1 + local.get $4 + local.get $0 i32.const 7728 - local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|0 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -12612,46 +12635,49 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|02 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|02 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12663,46 +12689,49 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|05 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|05 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12714,46 +12743,49 @@ unreachable end i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|08 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|08 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12765,50 +12797,50 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|011 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|011 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12820,50 +12852,50 @@ unreachable end i32.const 3 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 3 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|014 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|014 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -12875,50 +12907,50 @@ unreachable end i32.const 4 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 4 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|017 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12930,50 +12962,50 @@ unreachable end i32.const 10 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 10 i32.le_u i32.const 1 - local.get $4 + local.get $3 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $2 loop $while-continue|020 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|020 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -12985,20 +13017,20 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $4 + local.get $2 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $4 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -13008,25 +13040,24 @@ i32.gt_s select local.set $1 - local.get $3 + local.get $4 i32.load offset=4 - local.set $5 + local.set $0 loop $while-continue|023 local.get $1 - local.get $4 + local.get $2 i32.lt_s if local.get $1 - local.tee $0 i32.const 1 i32.shl - local.get $5 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $0 + local.get $1 i32.const 1 i32.add local.set $1 @@ -13034,9 +13065,9 @@ end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -13049,7 +13080,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const 0 call $~lib/typedarray/Int16Array#lastIndexOf@varargs if @@ -13062,7 +13093,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const 11 call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 @@ -13077,7 +13108,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const -1 call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 @@ -13092,7 +13123,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $3 + local.get $4 i32.const 3 call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const 3 @@ -13108,7 +13139,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13123,19 +13154,20 @@ i32.const 4 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 + local.get $4 + i32.load offset=4 + local.set $2 loop $while-continue|024 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 3 @@ -13144,7 +13176,7 @@ local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|024 end end @@ -13164,14 +13196,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 local.get $0 i32.const 1 i32.sub @@ -13180,29 +13212,30 @@ i32.const 3 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 - loop $while-continue|03 - local.get $1 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|027 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|03 + local.set $0 + br $while-continue|027 end end i32.const -1 @@ -13221,14 +13254,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 local.get $0 i32.const 1 i32.sub @@ -13237,29 +13270,30 @@ i32.const 2 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 - loop $while-continue|07 - local.get $1 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|030 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|07 + local.set $0 + br $while-continue|030 end end i32.const -1 @@ -13278,14 +13312,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 local.get $0 i32.const 1 i32.sub @@ -13294,29 +13328,30 @@ i32.const 100 i32.le_u select - local.set $1 - local.get $3 - i32.load offset=4 local.set $0 - loop $while-continue|01125 - local.get $1 + local.get $4 + i32.load offset=4 + local.set $2 + loop $while-continue|033 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|01125 + local.set $0 + br $while-continue|033 end end i32.const -1 @@ -13335,22 +13370,22 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 local.get $0 i32.const 10 i32.sub local.set $1 - local.get $3 + local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|015 + loop $while-continue|036 local.get $1 i32.const 0 i32.ge_s @@ -13363,12 +13398,12 @@ i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|015 + br $while-continue|036 end end i32.const -1 @@ -13387,22 +13422,22 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 - local.get $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 local.get $0 i32.const 11 i32.sub local.set $1 - local.get $3 + local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|019 + loop $while-continue|039 local.get $1 i32.const 0 i32.ge_s @@ -13415,12 +13450,12 @@ i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|019 + br $while-continue|039 end end i32.const -1 @@ -13438,50 +13473,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 9 call $~lib/typedarray/Uint16Array#subarray - local.tee $1 + local.tee $4 i32.store offset=8 - i32.const -1 + i32.const 0 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|028 - local.get $2 + local.set $2 + loop $while-continue|042 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|028 + local.set $0 + br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13493,46 +13533,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|031 - local.get $2 + local.set $2 + loop $while-continue|045 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|031 + local.set $0 + br $while-continue|045 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1568 @@ -13542,46 +13585,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|034 - local.get $2 + local.set $2 + loop $while-continue|048 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|034 + local.set $0 + br $while-continue|048 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -13593,46 +13639,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|037 - local.get $2 + local.set $2 + loop $while-continue|051 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|037 + local.set $0 + br $while-continue|051 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13644,46 +13693,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|040 - local.get $2 + local.set $2 + loop $while-continue|054 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|040 + local.set $0 + br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13695,46 +13747,49 @@ unreachable end i32.const 0 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 + i32.const 0 + local.get $3 + select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|043 - local.get $2 + local.set $2 + loop $while-continue|057 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|043 + local.set $0 + br $while-continue|057 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -13746,11 +13801,11 @@ unreachable end i32.const 1 - local.set $2 - i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 - local.get $1 + i32.const -1 + local.set $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13760,36 +13815,36 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|046 - local.get $2 + local.set $2 + loop $while-continue|060 + local.get $0 local.get $3 i32.lt_s if - local.get $2 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.shl - local.get $4 + local.get $2 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 - local.get $0 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|046 + local.set $0 + br $while-continue|060 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -13801,11 +13856,11 @@ unreachable end i32.const 2 - local.set $2 + local.set $1 i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 - local.get $1 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -13815,30 +13870,30 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 + local.get $4 i32.load offset=4 - local.set $1 - loop $while-continue|049 - local.get $2 + local.set $2 + loop $while-continue|063 + local.get $1 local.get $3 i32.lt_s if - local.get $2 + local.get $1 local.tee $0 i32.const 1 i32.shl - local.get $1 + local.get $2 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 + local.get $0 i32.const 1 i32.add - local.set $2 - br $while-continue|049 + local.set $1 + br $while-continue|063 end end i32.const -1 @@ -13882,26 +13937,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i64.const 0 i64.store - local.get $3 + local.get $0 i32.const 0 i32.store offset=8 - local.get $3 + local.get $0 i32.const 7728 i32.store - local.get $3 + local.get $0 i32.const 7740 i32.load - local.tee $2 + local.tee $0 call $~lib/typedarray/Int32Array#constructor local.tee $3 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $3 local.get $1 @@ -13916,8 +13971,10 @@ br $for-loop|0 end end - i32.const -1 + i32.const 0 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $3 i32.load offset=8 @@ -13930,12 +13987,12 @@ i32.load offset=4 local.set $2 loop $while-continue|0 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -13943,17 +14000,17 @@ i32.load i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -13963,9 +14020,9 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 local.get $3 i32.load offset=8 @@ -13977,13 +14034,13 @@ local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|03 - local.get $0 + loop $while-continue|02 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -13992,17 +14049,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|03 + local.set $1 + br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14014,27 +14071,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|07 - local.get $0 + loop $while-continue|05 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14042,18 +14099,18 @@ i32.load i32.const -1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|07 + local.set $1 + br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14065,27 +14122,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|011 - local.get $0 + loop $while-continue|08 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14093,18 +14150,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|011 + local.set $1 + br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14116,10 +14173,10 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 local.get $3 i32.load offset=8 i32.const 2 @@ -14130,17 +14187,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|015 - local.get $0 + loop $while-continue|011 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14148,18 +14205,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|015 + local.set $1 + br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14171,10 +14228,10 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 local.get $3 i32.load offset=8 i32.const 2 @@ -14185,17 +14242,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|019 - local.get $0 + loop $while-continue|014 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14203,18 +14260,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|019 + local.set $1 + br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14226,10 +14283,10 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 local.get $3 i32.load offset=8 i32.const 2 @@ -14240,17 +14297,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|023 - local.get $0 + loop $while-continue|017 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14258,18 +14315,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|023 + local.set $1 + br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14281,10 +14338,10 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 local.get $3 i32.load offset=8 i32.const 2 @@ -14295,17 +14352,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|027 - local.get $0 + loop $while-continue|020 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14313,18 +14370,18 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14337,7 +14394,7 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 local.get $3 i32.load offset=8 i32.const 2 @@ -14348,7 +14405,7 @@ i32.const 1 local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 local.get $2 i32.const 100 i32.sub @@ -14362,7 +14419,7 @@ local.get $3 i32.load offset=4 local.set $1 - loop $while-continue|031 + loop $while-continue|023 local.get $0 local.get $2 i32.lt_s @@ -14375,12 +14432,12 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|031 + br $while-continue|023 end end i32.const -1 @@ -14655,34 +14712,34 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|033 - local.get $0 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14691,17 +14748,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14713,34 +14770,34 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|037 - local.get $0 + loop $while-continue|027 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14748,18 +14805,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|037 + local.set $1 + br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -14771,34 +14828,34 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|041 - local.get $0 + loop $while-continue|030 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14806,18 +14863,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|041 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14829,34 +14886,34 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|045 - local.get $0 + loop $while-continue|033 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -14864,18 +14921,18 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|045 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14888,14 +14945,14 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 local.get $1 i32.const 10 i32.sub @@ -14903,7 +14960,7 @@ local.get $3 i32.load offset=4 local.set $1 - loop $while-continue|049 + loop $while-continue|036 local.get $0 i32.const 0 i32.ge_s @@ -14916,12 +14973,12 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|049 + br $while-continue|036 end end i32.const -1 @@ -14940,14 +14997,14 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 local.get $1 i32.const 11 i32.sub @@ -14955,7 +15012,7 @@ local.get $3 i32.load offset=4 local.set $1 - loop $while-continue|053 + loop $while-continue|039 local.get $0 i32.const 0 i32.ge_s @@ -14968,12 +15025,12 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|053 + br $while-continue|039 end end i32.const -1 @@ -14998,27 +15055,27 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|057 - local.get $0 + loop $while-continue|042 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -15026,18 +15083,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $1 + br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15049,27 +15106,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|061 - local.get $0 + loop $while-continue|045 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -15077,18 +15134,18 @@ i32.load i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|061 + local.set $1 + br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -15098,27 +15155,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|065 - local.get $0 + loop $while-continue|048 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -15126,18 +15183,18 @@ i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|065 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -15149,27 +15206,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|069 - local.get $0 + loop $while-continue|051 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -15177,18 +15234,18 @@ i32.load i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|069 + local.set $1 + br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15200,27 +15257,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|073 - local.get $0 + loop $while-continue|054 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -15228,18 +15285,18 @@ i32.load i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|073 + local.set $1 + br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15251,27 +15308,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|077 - local.get $0 + loop $while-continue|057 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -15279,18 +15336,18 @@ i32.load i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|077 + local.set $1 + br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15302,25 +15359,80 @@ unreachable end i32.const 1 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + i32.const 1 + local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 + i32.load offset=4 + local.set $3 + loop $while-continue|060 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load + i32.const 5 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|060 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 - i32.const 1 + i32.const 2 i32.le_u i32.const 1 local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|081 + loop $while-continue|063 local.get $0 local.get $2 i32.lt_s @@ -15334,67 +15446,12 @@ i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|081 - end - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 2 - i32.le_u - i32.const 1 - local.get $2 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 - local.get $4 - i32.load offset=4 - local.set $3 - loop $while-continue|085 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.tee $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - i32.const 5 - i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 - local.get $1 - i32.const 1 - i32.add - local.set $0 - br $while-continue|085 + br $while-continue|063 end end i32.const -1 @@ -15438,26 +15495,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i64.const 0 i64.store - local.get $3 + local.get $0 i32.const 0 i32.store offset=8 - local.get $3 + local.get $0 i32.const 7728 i32.store - local.get $3 + local.get $0 i32.const 7740 i32.load - local.tee $2 + local.tee $0 call $~lib/typedarray/Uint32Array#constructor local.tee $3 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s + i32.gt_s if local.get $3 local.get $1 @@ -15472,8 +15529,10 @@ br $for-loop|0 end end - i32.const -1 + i32.const 0 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 local.get $3 i32.load offset=8 @@ -15486,12 +15545,12 @@ i32.load offset=4 local.set $2 loop $while-continue|0 - local.get $0 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15499,17 +15558,17 @@ i32.load i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -15519,9 +15578,9 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 local.get $3 i32.load offset=8 @@ -15533,13 +15592,13 @@ local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|03 - local.get $0 + loop $while-continue|02 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15548,17 +15607,17 @@ i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|03 + local.set $1 + br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15570,27 +15629,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|07 - local.get $0 + loop $while-continue|05 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15598,18 +15657,18 @@ i32.load i32.const -1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|07 + local.set $1 + br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15621,27 +15680,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|011 - local.get $0 + loop $while-continue|08 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15649,18 +15708,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|011 + local.set $1 + br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -15672,10 +15731,10 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 local.get $3 i32.load offset=8 i32.const 2 @@ -15686,17 +15745,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|015 - local.get $0 + loop $while-continue|011 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15704,18 +15763,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|015 + local.set $1 + br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -15727,10 +15786,10 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 local.get $3 i32.load offset=8 i32.const 2 @@ -15741,17 +15800,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|019 - local.get $0 + loop $while-continue|014 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15759,18 +15818,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|019 + local.set $1 + br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -15782,10 +15841,10 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 local.get $3 i32.load offset=8 i32.const 2 @@ -15796,17 +15855,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|023 - local.get $0 + loop $while-continue|017 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15814,18 +15873,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|023 + local.set $1 + br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15837,10 +15896,10 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 local.get $3 i32.load offset=8 i32.const 2 @@ -15851,17 +15910,17 @@ i32.const 1 local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|027 - local.get $0 + loop $while-continue|020 + local.get $1 local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -15869,18 +15928,18 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15893,7 +15952,7 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 local.get $3 i32.load offset=8 i32.const 2 @@ -15904,7 +15963,7 @@ i32.const 1 local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 local.get $2 i32.const 100 i32.sub @@ -15918,7 +15977,7 @@ local.get $3 i32.load offset=4 local.set $1 - loop $while-continue|031 + loop $while-continue|023 local.get $0 local.get $2 i32.lt_s @@ -15931,12 +15990,12 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|031 + br $while-continue|023 end end i32.const -1 @@ -16211,34 +16270,34 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|033 - local.get $0 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -16247,17 +16306,17 @@ i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -16269,34 +16328,34 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|037 - local.get $0 + loop $while-continue|027 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -16304,18 +16363,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|037 + local.set $1 + br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -16327,34 +16386,34 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|041 - local.get $0 + loop $while-continue|030 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -16362,18 +16421,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|041 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16385,34 +16444,34 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 i32.le_u select - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $2 - loop $while-continue|045 - local.get $0 + loop $while-continue|033 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -16420,18 +16479,18 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|045 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16444,14 +16503,14 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 local.get $1 i32.const 10 i32.sub @@ -16459,7 +16518,7 @@ local.get $3 i32.load offset=4 local.set $1 - loop $while-continue|049 + loop $while-continue|036 local.get $0 i32.const 0 i32.ge_s @@ -16472,12 +16531,12 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|049 + br $while-continue|036 end end i32.const -1 @@ -16496,14 +16555,14 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 local.get $1 i32.const 11 i32.sub @@ -16511,7 +16570,7 @@ local.get $3 i32.load offset=4 local.set $1 - loop $while-continue|053 + loop $while-continue|039 local.get $0 i32.const 0 i32.ge_s @@ -16524,12 +16583,12 @@ i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|053 + br $while-continue|039 end end i32.const -1 @@ -16553,27 +16612,27 @@ local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|057 - local.get $0 + loop $while-continue|042 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -16581,18 +16640,18 @@ i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $1 + br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16604,27 +16663,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|061 - local.get $0 + loop $while-continue|045 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -16632,18 +16691,18 @@ i32.load i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|061 + local.set $1 + br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -16653,27 +16712,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|065 - local.get $0 + loop $while-continue|048 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -16681,18 +16740,18 @@ i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|065 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16704,27 +16763,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|069 - local.get $0 + loop $while-continue|051 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -16732,18 +16791,18 @@ i32.load i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|069 + local.set $1 + br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16755,27 +16814,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|073 - local.get $0 + loop $while-continue|054 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -16783,18 +16842,18 @@ i32.load i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|073 + local.set $1 + br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16806,27 +16865,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|077 - local.get $0 + loop $while-continue|057 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -16834,18 +16893,18 @@ i32.load i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|077 + local.set $1 + br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -16857,10 +16916,10 @@ unreachable end i32.const 1 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $4 i32.load offset=8 i32.const 2 @@ -16871,17 +16930,17 @@ i32.const 1 local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|081 - local.get $0 + loop $while-continue|060 + local.get $1 local.get $2 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $3 @@ -16889,18 +16948,18 @@ i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|081 + local.set $1 + br $while-continue|060 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16915,7 +16974,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $4 i32.load offset=8 i32.const 2 @@ -16926,11 +16985,11 @@ i32.const 1 local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $4 i32.load offset=4 local.set $3 - loop $while-continue|085 + loop $while-continue|063 local.get $0 local.get $2 i32.lt_s @@ -16944,12 +17003,12 @@ i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|085 + br $while-continue|063 end end i32.const -1 @@ -16993,28 +17052,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=8 - local.get $2 + local.get $0 i32.const 7728 i32.store - local.get $2 + local.get $0 i32.const 7740 i32.load - local.tee $3 + local.tee $0 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $2 + local.get $4 local.get $1 i32.const 7728 local.get $1 @@ -17028,44 +17087,46 @@ br $for-loop|0 end end - i32.const -1 + i32.const 0 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|0 - local.get $0 - local.get $4 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -17075,46 +17136,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|03 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|02 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 11 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|03 + local.set $1 + br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17126,46 +17187,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|07 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|05 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const -1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|07 + local.set $1 + br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17177,46 +17238,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|011 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|08 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|011 + local.set $1 + br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -17228,50 +17289,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|015 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|011 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|015 + local.set $1 + br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -17283,50 +17344,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 3 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|019 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|014 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|019 + local.set $1 + br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -17338,50 +17399,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 4 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|023 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|017 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|023 + local.set $1 + br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17393,50 +17454,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 10 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|027 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|020 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17449,19 +17510,19 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -17471,12 +17532,12 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|031 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -17487,12 +17548,12 @@ i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|031 + br $while-continue|023 end end i32.const -1 @@ -17511,39 +17572,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $1 local.get $2 - local.get $3 i32.add local.get $2 i32.const 1 i32.sub - local.get $3 + local.get $1 + local.get $1 local.get $2 - local.get $3 - i32.le_s + i32.ge_s select - local.get $3 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|00 @@ -17552,6 +17609,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -17559,7 +17617,7 @@ i64.load i64.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -17567,9 +17625,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -17580,35 +17638,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|06 @@ -17617,6 +17675,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -17625,7 +17684,7 @@ i64.const 11 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -17633,9 +17692,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17648,35 +17707,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|012 @@ -17685,6 +17744,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -17693,7 +17753,7 @@ i64.const -1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -17701,9 +17761,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17716,35 +17776,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|018 @@ -17753,6 +17813,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -17761,7 +17822,7 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -17769,9 +17830,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -17783,54 +17844,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $0 - local.tee $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|033 - local.get $0 + local.set $2 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -17842,53 +17902,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|037 - local.get $0 + local.set $2 + loop $while-continue|027 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|037 + local.set $1 + br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -17900,53 +17960,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|041 - local.get $0 + local.set $2 + loop $while-continue|030 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|041 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17958,53 +18018,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|045 - local.get $0 + local.set $2 + loop $while-continue|033 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|045 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -18017,22 +18077,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|049 + loop $while-continue|036 local.get $0 i32.const 0 i32.ge_s @@ -18045,12 +18105,12 @@ i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|049 + br $while-continue|036 end end i32.const -1 @@ -18069,22 +18129,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|053 + loop $while-continue|039 local.get $0 i32.const 0 i32.ge_s @@ -18097,12 +18157,12 @@ i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|053 + br $while-continue|039 end end i32.const -1 @@ -18120,33 +18180,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 9 call $~lib/typedarray/Int64Array#subarray local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|057 - local.get $0 + loop $while-continue|042 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -18154,18 +18214,18 @@ i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $1 + br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18177,27 +18237,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|061 - local.get $0 + loop $while-continue|045 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -18205,18 +18265,18 @@ i64.load i64.const 4 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|061 + local.set $1 + br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -18226,27 +18286,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|065 - local.get $0 + loop $while-continue|048 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -18254,18 +18314,18 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|065 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -18277,27 +18337,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|069 - local.get $0 + loop $while-continue|051 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -18305,18 +18365,18 @@ i64.load i64.const 9 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|069 + local.set $1 + br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18328,27 +18388,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|073 - local.get $0 + loop $while-continue|054 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -18356,18 +18416,18 @@ i64.load i64.const 10 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|073 + local.set $1 + br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18379,27 +18439,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|077 - local.get $0 + loop $while-continue|057 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -18407,18 +18467,18 @@ i64.load i64.const 11 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|077 + local.set $1 + br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18430,10 +18490,10 @@ unreachable end i32.const 1 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 local.get $4 i32.load offset=8 i32.const 3 @@ -18444,17 +18504,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|081 - local.get $0 + loop $while-continue|060 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -18462,18 +18522,18 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|081 + local.set $1 + br $while-continue|060 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -18488,7 +18548,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 local.get $4 i32.load offset=8 i32.const 3 @@ -18499,11 +18559,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|085 + loop $while-continue|063 local.get $0 local.get $3 i32.lt_s @@ -18517,12 +18577,12 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|085 + br $while-continue|063 end end i32.const -1 @@ -18566,28 +18626,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=8 - local.get $2 + local.get $0 i32.const 7728 i32.store - local.get $2 + local.get $0 i32.const 7740 i32.load - local.tee $3 + local.tee $0 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $2 + local.get $4 local.get $1 i32.const 7728 local.get $1 @@ -18601,44 +18661,46 @@ br $for-loop|0 end end - i32.const -1 + i32.const 0 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|0 - local.get $0 - local.get $4 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -18648,46 +18710,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|03 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|02 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 11 i64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|03 + local.set $1 + br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18699,46 +18761,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|07 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|05 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const -1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|07 + local.set $1 + br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18750,46 +18812,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|011 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|08 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|011 + local.set $1 + br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18801,50 +18863,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|015 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|011 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|015 + local.set $1 + br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18856,50 +18918,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 3 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|019 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|014 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|019 + local.set $1 + br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18911,50 +18973,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 4 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|023 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|017 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|023 + local.set $1 + br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18966,50 +19028,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 10 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|027 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|020 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19022,19 +19084,19 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -19044,12 +19106,12 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|031 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -19060,12 +19122,12 @@ i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|031 + br $while-continue|023 end end i32.const -1 @@ -19084,39 +19146,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $1 local.get $2 - local.get $3 i32.add local.get $2 i32.const 1 i32.sub - local.get $3 + local.get $1 + local.get $1 local.get $2 - local.get $3 - i32.le_s + i32.ge_s select - local.get $3 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|00 @@ -19125,6 +19183,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19132,7 +19191,7 @@ i64.load i64.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -19140,9 +19199,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -19153,35 +19212,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|06 @@ -19190,6 +19249,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19198,7 +19258,7 @@ i64.const 11 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -19206,9 +19266,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19221,35 +19281,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|012 @@ -19258,6 +19318,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19266,7 +19327,7 @@ i64.const -1 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -19274,9 +19335,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19289,35 +19350,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|018 @@ -19326,6 +19387,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19334,7 +19396,7 @@ i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -19342,9 +19404,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -19356,54 +19418,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $0 - local.tee $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|033 - local.get $0 + local.set $2 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -19415,53 +19476,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|037 - local.get $0 + local.set $2 + loop $while-continue|027 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|037 + local.set $1 + br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -19473,53 +19534,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|041 - local.get $0 + local.set $2 + loop $while-continue|030 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|041 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19531,53 +19592,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|045 - local.get $0 + local.set $2 + loop $while-continue|033 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|045 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -19590,22 +19651,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|049 + loop $while-continue|036 local.get $0 i32.const 0 i32.ge_s @@ -19618,12 +19679,12 @@ i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|049 + br $while-continue|036 end end i32.const -1 @@ -19642,22 +19703,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|053 + loop $while-continue|039 local.get $0 i32.const 0 i32.ge_s @@ -19670,12 +19731,12 @@ i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|053 + br $while-continue|039 end end i32.const -1 @@ -19693,33 +19754,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 9 call $~lib/typedarray/Uint64Array#subarray local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|057 - local.get $0 + loop $while-continue|042 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19727,18 +19788,18 @@ i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $1 + br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19750,27 +19811,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|061 - local.get $0 + loop $while-continue|045 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19778,18 +19839,18 @@ i64.load i64.const 4 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|061 + local.set $1 + br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -19799,27 +19860,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|065 - local.get $0 + loop $while-continue|048 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19827,18 +19888,18 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|065 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -19850,27 +19911,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|069 - local.get $0 + loop $while-continue|051 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19878,18 +19939,18 @@ i64.load i64.const 9 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|069 + local.set $1 + br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19901,27 +19962,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|073 - local.get $0 + loop $while-continue|054 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19929,18 +19990,18 @@ i64.load i64.const 10 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|073 + local.set $1 + br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -19952,27 +20013,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|077 - local.get $0 + loop $while-continue|057 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -19980,18 +20041,18 @@ i64.load i64.const 11 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|077 + local.set $1 + br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20003,10 +20064,10 @@ unreachable end i32.const 1 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 local.get $4 i32.load offset=8 i32.const 3 @@ -20017,17 +20078,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|081 - local.get $0 + loop $while-continue|060 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -20035,18 +20096,18 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|081 + local.set $1 + br $while-continue|060 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -20061,7 +20122,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 local.get $4 i32.load offset=8 i32.const 3 @@ -20072,11 +20133,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|085 + loop $while-continue|063 local.get $0 local.get $3 i32.lt_s @@ -20090,12 +20151,12 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|085 + br $while-continue|063 end end i32.const -1 @@ -20139,28 +20200,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=8 - local.get $2 + local.get $0 i32.const 7728 i32.store - local.get $2 + local.get $0 i32.const 7740 i32.load - local.tee $3 + local.tee $0 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $2 + local.get $4 local.get $1 i32.const 7728 local.get $1 @@ -20174,45 +20235,47 @@ br $for-loop|0 end end - i32.const -1 + i32.const 0 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|0 - local.get $0 - local.get $4 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 0 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20222,46 +20285,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|03 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|02 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 11 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|03 + local.set $1 + br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20273,46 +20336,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|07 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|05 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const -1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|07 + local.set $1 + br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20324,46 +20387,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|011 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|08 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|011 + local.set $1 + br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -20375,50 +20438,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|015 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|011 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|015 + local.set $1 + br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -20430,50 +20493,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.const 3 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|019 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|014 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|019 + local.set $1 + br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -20485,50 +20548,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.const 4 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|023 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|017 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|023 + local.set $1 + br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20540,50 +20603,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.const 10 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|027 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|020 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20596,19 +20659,19 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -20618,12 +20681,12 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|031 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -20634,12 +20697,12 @@ f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|031 + br $while-continue|023 end end i32.const -1 @@ -20658,39 +20721,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $0 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $1 local.get $2 - local.get $3 i32.add local.get $2 i32.const 1 i32.sub - local.get $3 + local.get $1 + local.get $1 local.get $2 - local.get $3 - i32.le_s + i32.ge_s select - local.get $3 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|00 @@ -20699,6 +20758,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -20707,7 +20767,7 @@ f32.const 0 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -20715,9 +20775,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20728,35 +20788,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|06 @@ -20765,6 +20825,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -20773,7 +20834,7 @@ f32.const 11 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -20781,9 +20842,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20796,35 +20857,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|012 @@ -20833,6 +20894,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -20841,7 +20903,7 @@ f32.const -1 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -20849,9 +20911,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20864,35 +20926,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|018 @@ -20901,6 +20963,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -20909,7 +20972,7 @@ f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -20917,9 +20980,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -20931,54 +20994,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $0 - local.tee $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|033 - local.get $0 + local.set $2 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 3 f32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -20990,53 +21052,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|037 - local.get $0 + local.set $2 + loop $while-continue|027 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|037 + local.set $1 + br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -21048,53 +21110,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|041 - local.get $0 + local.set $2 + loop $while-continue|030 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|041 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21106,53 +21168,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|045 - local.get $0 + local.set $2 + loop $while-continue|033 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|045 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -21165,22 +21227,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|049 + loop $while-continue|036 local.get $0 i32.const 0 i32.ge_s @@ -21193,12 +21255,12 @@ f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|049 + br $while-continue|036 end end i32.const -1 @@ -21217,22 +21279,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|053 + loop $while-continue|039 local.get $0 i32.const 0 i32.ge_s @@ -21245,12 +21307,12 @@ f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|053 + br $while-continue|039 end end i32.const -1 @@ -21268,33 +21330,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 9 call $~lib/typedarray/Float32Array#subarray local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|057 - local.get $0 + loop $while-continue|042 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -21302,18 +21364,18 @@ f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $1 + br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21325,27 +21387,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|061 - local.get $0 + loop $while-continue|045 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -21353,18 +21415,18 @@ f32.load f32.const 4 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|061 + local.set $1 + br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -21374,27 +21436,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|065 - local.get $0 + loop $while-continue|048 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -21402,18 +21464,18 @@ f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|065 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -21425,27 +21487,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|069 - local.get $0 + loop $while-continue|051 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -21453,18 +21515,18 @@ f32.load f32.const 9 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|069 + local.set $1 + br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21476,27 +21538,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|073 - local.get $0 + loop $while-continue|054 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -21504,18 +21566,18 @@ f32.load f32.const 10 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|073 + local.set $1 + br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21527,27 +21589,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|077 - local.get $0 + loop $while-continue|057 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -21555,18 +21617,18 @@ f32.load f32.const 11 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|077 + local.set $1 + br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21578,10 +21640,10 @@ unreachable end i32.const 1 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 local.get $4 i32.load offset=8 i32.const 2 @@ -21592,17 +21654,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|081 - local.get $0 + loop $while-continue|060 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -21610,18 +21672,18 @@ f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|081 + local.set $1 + br $while-continue|060 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -21636,7 +21698,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 local.get $4 i32.load offset=8 i32.const 2 @@ -21647,11 +21709,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|085 + loop $while-continue|063 local.get $0 local.get $3 i32.lt_s @@ -21665,12 +21727,12 @@ f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|085 + br $while-continue|063 end end i32.const -1 @@ -21714,28 +21776,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i64.const 0 i64.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=8 - local.get $2 + local.get $0 i32.const 7728 i32.store - local.get $2 + local.get $0 i32.const 7740 i32.load - local.tee $3 + local.tee $0 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $4 i32.store offset=4 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $2 + local.get $4 local.get $1 i32.const 7728 local.get $1 @@ -21749,45 +21811,47 @@ br $for-loop|0 end end - i32.const -1 + i32.const 0 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 + local.set $2 loop $while-continue|0 - local.get $0 - local.get $4 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 0 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -21797,46 +21861,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 - local.get $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 - local.get $2 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|03 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|02 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 11 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|03 + local.set $1 + br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21848,46 +21912,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|07 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|05 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const -1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|07 + local.set $1 + br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -21899,46 +21963,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|011 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|08 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|011 + local.set $1 + br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -21950,50 +22014,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|015 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|011 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|015 + local.set $1 + br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -22005,50 +22069,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 3 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|019 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|014 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|019 + local.set $1 + br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -22060,50 +22124,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 4 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|023 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|017 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|023 + local.set $1 + br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22115,50 +22179,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 - local.get $2 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 10 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|027 - local.get $0 - local.get $4 + local.set $2 + loop $while-continue|020 + local.get $1 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22171,19 +22235,19 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + local.get $2 i32.const 100 i32.sub local.tee $0 @@ -22193,12 +22257,12 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|031 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -22209,12 +22273,12 @@ f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|031 + br $while-continue|023 end end i32.const -1 @@ -22233,39 +22297,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $1 local.get $2 - local.get $3 i32.add local.get $2 i32.const 1 i32.sub - local.get $3 + local.get $1 + local.get $1 local.get $2 - local.get $3 - i32.le_s + i32.ge_s select - local.get $3 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|00 @@ -22274,6 +22334,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -22282,7 +22343,7 @@ f64.const 0 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -22290,9 +22351,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -22303,35 +22364,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|06 @@ -22340,6 +22401,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -22348,7 +22410,7 @@ f64.const 11 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -22356,9 +22418,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22371,35 +22433,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|012 @@ -22408,6 +22470,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -22416,7 +22479,7 @@ f64.const -1 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -22424,9 +22487,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22439,35 +22502,35 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - local.set $2 - i32.const -1 + local.tee $2 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $3 + local.get $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 + local.get $1 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub + local.get $1 + local.get $1 local.get $2 - local.get $2 - local.get $3 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select local.set $1 - local.get $0 + local.get $4 i32.load offset=4 local.set $2 loop $while-continue|018 @@ -22476,6 +22539,7 @@ i32.ge_s if local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -22484,7 +22548,7 @@ f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $1 + local.get $0 i32.const 1 i32.sub local.set $1 @@ -22492,9 +22556,9 @@ end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -22506,54 +22570,53 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $0 - local.tee $2 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 4 - local.get $0 + local.get $1 i32.const 4 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|033 - local.get $0 + local.set $2 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 3 f64.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|024 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -22565,53 +22628,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|037 - local.get $0 + local.set $2 + loop $while-continue|027 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|037 + local.set $1 + br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -22623,53 +22686,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|041 - local.get $0 + local.set $2 + loop $while-continue|030 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|041 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22681,53 +22744,53 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + local.get $1 i32.const 1 i32.sub i32.const 100 - local.get $0 + local.get $1 i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $4 i32.load offset=4 - local.set $3 - loop $while-continue|045 - local.get $0 + local.set $2 + loop $while-continue|033 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + local.get $0 i32.const 1 i32.sub - local.set $0 - br $while-continue|045 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -22740,22 +22803,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|049 + loop $while-continue|036 local.get $0 i32.const 0 i32.ge_s @@ -22768,12 +22831,12 @@ f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|049 + br $while-continue|036 end end i32.const -1 @@ -22792,22 +22855,22 @@ end i32.const -1 local.set $0 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $4 i32.load offset=4 local.set $1 - loop $while-continue|053 + loop $while-continue|039 local.get $0 i32.const 0 i32.ge_s @@ -22820,12 +22883,12 @@ f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|053 + br $while-continue|039 end end i32.const -1 @@ -22843,34 +22906,34 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 4 i32.const 9 call $~lib/typedarray/Float64Array#subarray local.tee $4 i32.store offset=8 i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|057 - local.get $0 + loop $while-continue|042 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -22878,18 +22941,18 @@ f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $1 + br $while-continue|042 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22901,27 +22964,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|061 - local.get $0 + loop $while-continue|045 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -22929,18 +22992,18 @@ f64.load f64.const 4 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|061 + local.set $1 + br $while-continue|045 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -22950,27 +23013,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|065 - local.get $0 + loop $while-continue|048 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -22978,18 +23041,18 @@ f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|065 + local.set $1 + br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -23001,27 +23064,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|069 - local.get $0 + loop $while-continue|051 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -23029,18 +23092,18 @@ f64.load f64.const 9 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|069 + local.set $1 + br $while-continue|051 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -23052,27 +23115,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|073 - local.get $0 + loop $while-continue|054 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -23080,18 +23143,18 @@ f64.load f64.const 10 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|073 + local.set $1 + br $while-continue|054 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -23103,27 +23166,27 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|077 - local.get $0 + loop $while-continue|057 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -23131,18 +23194,18 @@ f64.load f64.const 11 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|077 + local.set $1 + br $while-continue|057 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -23154,10 +23217,10 @@ unreachable end i32.const 1 - local.set $0 - i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 local.get $4 i32.load offset=8 i32.const 3 @@ -23168,17 +23231,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|081 - local.get $0 + loop $while-continue|060 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -23186,18 +23249,18 @@ f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|081 + local.set $1 + br $while-continue|060 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -23212,7 +23275,7 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 local.get $4 i32.load offset=8 i32.const 3 @@ -23223,11 +23286,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|085 + loop $while-continue|063 local.get $0 local.get $3 i32.lt_s @@ -23241,12 +23304,12 @@ f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|085 + br $while-continue|063 end end i32.const -1 @@ -23374,7 +23437,6 @@ ) (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 i32.const 0 @@ -23409,50 +23471,51 @@ i32.add return end + local.get $0 local.get $1 i32.extend8_s - local.tee $3 - local.tee $1 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -23460,12 +23523,9 @@ end local.get $2 i32.add - local.set $1 - local.get $0 - local.get $3 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) (local $1 i32) @@ -23474,32 +23534,32 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=8 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $6 @@ -23511,119 +23571,121 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + local.get $5 + i32.add i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/itoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $5 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $4 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + 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 local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + 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) local.get $0 local.get $1 i32.eq @@ -23658,47 +23720,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -23709,17 +23771,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -23732,11 +23793,12 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 i32.const 255 i32.and @@ -23753,62 +23815,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 255 i32.and - local.tee $1 - local.tee $2 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $1 - local.get $2 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $0 ) (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) (local $1 i32) @@ -23817,32 +23877,32 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=8 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $6 @@ -23854,118 +23914,118 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + local.get $5 + i32.add i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/itoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $5 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + 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 local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $4 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) local.get $1 i32.extend16_s i32.const 0 @@ -24000,50 +24060,51 @@ i32.add return end + local.get $0 local.get $1 i32.extend16_s - local.tee $3 - local.tee $1 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -24051,12 +24112,9 @@ end local.get $2 i32.add - local.set $1 - local.get $0 - local.get $3 - local.get $1 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $0 ) (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24065,34 +24123,34 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.shr_u - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 i32.const 1 i32.sub local.tee $6 @@ -24104,121 +24162,121 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 1 + i32.shl + local.get $5 + i32.add i32.load16_s - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/itoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add local.get $1 i32.const 1 i32.shl - local.get $4 - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $6 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 1 + i32.shl + local.get $5 + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 i32.const 65535 i32.and @@ -24235,62 +24293,60 @@ i32.const 1 return end + local.get $0 local.get $1 i32.const 65535 i32.and - local.tee $1 - local.tee $2 + local.tee $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 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 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $1 - local.get $2 + local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $0 ) (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24299,34 +24355,34 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.shr_u - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 i32.const 1 i32.sub local.tee $6 @@ -24338,118 +24394,119 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 1 + i32.shl + local.get $5 + i32.add i32.load16_u - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/itoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add local.get $1 i32.const 1 i32.shl - local.get $4 - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $6 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 1 + i32.shl + local.get $5 + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24545,34 +24602,34 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $6 @@ -24584,118 +24641,119 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $5 + i32.add i32.load - call $~lib/util/number/itoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/itoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add local.get $1 - i32.const 2 + i32.const 1 i32.shl - local.get $4 - i32.add - i32.load - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $6 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - call $~lib/util/number/itoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 2 + i32.shl + local.get $5 + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -24769,34 +24827,34 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $6 @@ -24808,118 +24866,119 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $5 + i32.add i32.load - call $~lib/util/number/utoa32 - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/itoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add local.get $1 - i32.const 2 + i32.const 1 i32.shl - local.get $4 - i32.add - i32.load - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $6 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - call $~lib/util/number/itoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 2 + i32.shl + local.get $5 + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -25012,11 +25071,10 @@ (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 i64.const 0 i64.lt_s - local.tee $2 + local.tee $3 if local.get $0 i32.const 45 @@ -25030,7 +25088,7 @@ i64.const 10 i64.lt_u if - local.get $2 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -25039,7 +25097,7 @@ i64.const 48 i64.or i64.store16 - local.get $2 + local.get $3 i32.const 1 i32.add return @@ -25050,59 +25108,58 @@ if local.get $1 i32.wrap_i64 - local.tee $3 - local.tee $4 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $4 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $4 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $4 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $4 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $4 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $4 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $4 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $4 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.get $2 + local.get $3 i32.add - local.set $2 + local.set $3 local.get $0 - local.get $3 local.get $2 + local.get $3 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -25157,12 +25214,12 @@ i32.add end end - local.get $2 + local.get $3 i32.add - local.tee $2 + local.tee $3 call $~lib/util/number/utoa64_dec_lut end - local.get $2 + local.get $3 ) (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -25172,33 +25229,31 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $7 + local.tee $6 i32.const 0 i32.lt_s if @@ -25210,11 +25265,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $7 - i32.eqz - if - local.get $4 + 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 @@ -25225,271 +25280,271 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - local.set $0 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $2 - i64.sub - local.get $2 + local.get $2 + i64.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 + local.tee $1 + select + local.tee $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer local.get $2 - i64.const 63 - i64.shr_u i32.wrap_i64 - local.tee $1 - select - local.tee $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $3 - local.tee $0 - i32.const 100000 + local.tee $3 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 i32.lt_u if (result i32) local.get $0 - i32.const 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.get $1 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - local.get $4 - call $~lib/util/number/utoa32_dec_lut 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 + end + end + local.get $1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + local.get $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 1000000000000000 + i64.const 1000000000000 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 + 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 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 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.add end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 + else local.get $2 - local.get $3 - call $~lib/util/number/utoa64_dec_lut + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $2 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $2 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end local.get $1 - 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.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa64_dec_lut + end + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 end - br $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 end + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 21 - i32.add - i32.mul - i32.const 21 + i32.const 4 i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add local.get $3 + i32.const 3 + i32.shl + local.get $5 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 local.get $7 - i32.lt_s if - local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $3 - i32.const 3 + i32.const 1 i32.shl - local.get $4 - i32.add - i64.load - call $~lib/util/number/itoa_buffered local.get $0 i32.add - local.set $0 - local.get $5 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9584 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.set $0 - end - local.get $3 + i32.const 9584 + local.get $7 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $7 i32.add - local.set $3 - br $for-loop|0 + local.set $1 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $6 + end + local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 3 + i32.shl + local.get $5 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.const 1 - i32.shl local.get $1 - i32.add - local.get $7 - i32.const 3 - i32.shl - local.get $4 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer @@ -25640,35 +25695,37 @@ ) (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result 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) - block $folding-inner1 - block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + (local $7 i64) + block $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $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 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub - local.tee $7 + local.tee $3 i32.const 0 i32.lt_s if @@ -25677,275 +25734,276 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0 - local.get $7 - i32.eqz - if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - local.get $4 - i64.load - local.set $2 + local.get $3 + i32.eqz + if + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $2 + i64.load + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $7 + i64.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + i32.const 8000 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $7 + i64.const 4294967295 + i64.le_u + if global.get $~lib/memory/__stack_pointer - i32.const 16628 - 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/utoa64 - end - local.get $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $0 - local.tee $1 - i32.const 100000 + local.get $7 + i32.wrap_i64 + local.tee $2 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 i32.lt_u if (result i32) - local.get $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.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add 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 + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 + else local.get $0 - local.get $1 - call $~lib/util/number/utoa32_dec_lut + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $7 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $7 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $7 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $7 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $7 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $7 + i64.const 10000000000000 + i64.ge_u + i32.add + end else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 + local.get $7 + i64.const 100000000000000000 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 + local.get $7 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add 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 + local.get $7 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $7 + i64.const 1000000000000000000 + i64.ge_u + i32.add end - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $2 - local.get $0 - call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + local.tee $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $7 + local.get $0 + call $~lib/util/number/utoa64_dec_lut end - local.set $0 - br $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 end + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 20 - i32.add - i32.mul - i32.const 20 + i32.const 4 i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - loop $for-loop|0 - local.get $3 - local.get $7 - i32.lt_s + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 20 + i32.add + i32.mul + i32.const 20 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $5 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $6 if local.get $1 i32.const 1 i32.shl - local.get $6 + local.get $0 i32.add - local.get $3 - i32.const 3 + i32.const 9584 + local.get $6 + i32.const 1 i32.shl - local.get $4 - i32.add - i64.load - call $~lib/util/number/itoa_buffered + call $~lib/memory/memory.copy local.get $1 + local.get $6 i32.add local.set $1 - local.get $0 - if - local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add - i32.const 9584 - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $5 - local.get $1 - i32.const 1 - i32.shl - local.get $6 - i32.add - local.get $7 - i32.const 3 - i32.shl - local.get $4 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $0 - i32.gt_s - if - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + end + local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 return end i32.const 33040 @@ -25988,47 +26046,46 @@ i64.shr_u i32.wrap_i64 local.tee $3 - local.tee $6 i32.const 100000 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $6 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $6 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $6 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $6 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $6 + local.get $3 i32.const 100000000 i32.ge_u i32.add @@ -26215,7 +26272,7 @@ i32.add local.tee $0 i32.load16_u - local.set $6 + local.set $9 loop $while-continue|3 local.get $1 local.get $12 @@ -26245,10 +26302,10 @@ i32.const 0 end if - local.get $6 + local.get $9 i32.const 1 i32.sub - local.set $6 + local.set $9 local.get $1 local.get $2 i64.add @@ -26257,7 +26314,7 @@ end end local.get $0 - local.get $6 + local.get $9 i32.store16 local.get $5 return @@ -26339,7 +26396,7 @@ i32.add local.tee $0 i32.load16_u - local.set $6 + local.set $9 loop $while-continue|6 local.get $1 local.get $2 @@ -26369,10 +26426,10 @@ i32.const 0 end if - local.get $6 + local.get $9 i32.const 1 i32.sub - local.set $6 + local.set $9 local.get $1 local.get $13 i64.add @@ -26381,7 +26438,7 @@ end end local.get $0 - local.get $6 + local.get $9 i32.store16 local.get $5 end @@ -27071,34 +27128,34 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinFloatArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $6 @@ -27110,121 +27167,122 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinFloatArray + end + local.get $6 + i32.eqz + if + local.get $5 + f32.load + f64.promote_f32 + 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 br $__inlined_func$~lib/util/string/joinFloatArray end - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 28 + i32.add + i32.mul + i32.const 28 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $5 + i32.add f32.load f64.promote_f32 - call $~lib/util/number/dtoa - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/dtoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add local.get $1 - i32.const 2 + i32.const 1 i32.shl - local.get $4 - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $6 - i32.const 2 - i32.shl - local.get $4 - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 2 + i32.shl + local.get $5 + i32.add + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -27233,34 +27291,34 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block $__inlined_func$~lib/util/string/joinFloatArray (result i32) - local.get $0 - i32.load offset=4 - local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinFloatArray local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store i32.const 1 i32.sub local.tee $6 @@ -27272,118 +27330,119 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 + local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end - block $folding-inner0 + local.get $6 + i32.eqz + if + local.get $5 + f64.load + 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 + br $__inlined_func$~lib/util/string/joinFloatArray + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 28 + i32.add + i32.mul + i32.const 28 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 local.get $6 - i32.eqz + i32.lt_s if - local.get $4 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 3 + i32.shl + local.get $5 + i32.add f64.load - call $~lib/util/number/dtoa - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - loop $for-loop|0 + call $~lib/util/number/dtoa_buffered local.get $1 - local.get $6 - i32.lt_s + i32.add + local.set $1 + local.get $4 if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add local.get $1 - i32.const 3 + i32.const 1 i32.shl - local.get $4 - i32.add - f64.load - call $~lib/util/number/dtoa_buffered local.get $0 i32.add - local.set $0 - local.get $2 - if - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - i32.const 9584 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $2 - i32.add - local.set $0 - end - local.get $1 + i32.const 9584 + local.get $4 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 i32.add local.set $1 - br $for-loop|0 end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $3 - local.get $0 - i32.const 1 - i32.shl - local.get $5 - i32.add - local.get $6 - i32.const 3 - i32.shl - local.get $4 - i32.add - f64.load - call $~lib/util/number/dtoa_buffered + end + local.get $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 3 + i32.shl + local.get $5 + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $5 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end + local.get $1 + call $~lib/string/String#substring + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $0 ) (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -27728,11 +27787,11 @@ end local.get $0 i32.load offset=8 + local.get $2 local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.get $2 i32.add i32.lt_s if @@ -27812,11 +27871,11 @@ end local.get $0 i32.load offset=8 + local.get $2 local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.get $2 i32.add i32.lt_s if @@ -28136,9 +28195,9 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 i32.load offset=12 - local.get $2 i32.add local.get $0 i32.load offset=8 @@ -36002,26 +36061,36 @@ i32.sub ) (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable end local.get $0 - i32.load offset=4 + i32.load local.tee $0 if local.get $0 @@ -36030,7 +36099,7 @@ return end local.get $0 - i32.load + i32.load offset=4 local.tee $0 if local.get $0 @@ -36059,52 +36128,52 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $5 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $5 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $5 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $5 i32.const 5 i32.const 5 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3952 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -36113,291 +36182,65 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i64.const 0 i64.store - local.get $1 - local.tee $2 - i32.load offset=8 - local.set $4 local.get $5 + i32.load offset=8 + local.set $2 + local.get $3 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 local.set $7 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.lt_s if - local.get $3 + local.get $1 local.get $7 i32.add i32.load8_s - local.set $6 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $6 local.get $3 - local.get $2 + local.get $1 + local.get $5 i32.const 3952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.get $5 - i32.add local.get $6 + i32.add + local.get $3 i32.store8 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $1 - i32.store - local.get $1 - if - local.get $8 - local.get $1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end - local.get $8 - local.get $0 - i32.store offset=8 - local.get $8 - 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 $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.get $8 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 33040 - i32.const 33088 - 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) - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $1 - local.tee $2 - i32.load offset=8 - local.set $4 - local.get $5 - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $1 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $7 - i32.add - i32.load8_u - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $6 - local.get $3 - local.get $2 - i32.const 3984 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if local.get $0 - local.tee $1 i32.const 1 i32.add local.set $0 - local.get $1 - local.get $5 - i32.add - local.get $6 - i32.store8 end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $8 - local.get $5 + local.get $6 local.get $0 call $~lib/rt/itcms/__renew local.tee $1 @@ -36447,7 +36290,7 @@ end local.get $8 i32.const 0 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne if @@ -36460,7 +36303,7 @@ end local.get $8 i32.const 1 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne if @@ -36473,7 +36316,7 @@ end local.get $8 i32.const 2 - call $~lib/typedarray/Uint8Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 5 i32.ne if @@ -36497,7 +36340,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -36507,51 +36350,51 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $5 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $5 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $5 i32.const 3 i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $5 i32.const 5 i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -36561,67 +36404,65 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i64.const 0 i64.store - local.get $1 - local.tee $2 - i32.load offset=8 - local.set $4 local.get $5 + i32.load offset=8 + local.set $2 + local.get $3 i32.const 12 - i32.const 5 + i32.const 4 call $~lib/rt/itcms/__new local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 local.set $7 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.lt_s if - local.get $3 + local.get $1 local.get $7 i32.add i32.load8_u - local.set $6 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $6 local.get $3 - local.get $2 - i32.const 4016 + local.get $1 + local.get $5 + i32.const 3984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.tee $1 + local.get $6 + i32.add + local.get $3 + i32.store8 + local.get $0 i32.const 1 i32.add local.set $0 - local.get $1 - local.get $5 - i32.add - local.get $6 - i32.store8 end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $8 - local.get $5 + local.get $6 local.get $0 call $~lib/rt/itcms/__renew local.tee $1 @@ -36671,7 +36512,7 @@ end local.get $8 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne if @@ -36684,7 +36525,7 @@ end local.get $8 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne if @@ -36697,7 +36538,7 @@ end local.get $8 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint8Array#__get i32.const 5 i32.ne if @@ -36721,7 +36562,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -36731,51 +36572,51 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 i32.const 1 i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 i32.const 2 i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 i32.const 3 i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 i32.const 5 i32.const 5 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -36788,100 +36629,87 @@ local.tee $3 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 + local.set $2 local.get $3 i32.const 12 - i32.const 6 + i32.const 5 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.shl + local.get $2 i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 - i32.const 1 - i32.shl - local.get $8 + local.get $1 + local.get $7 i32.add - i32.load16_s - local.set $7 + i32.load8_u + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - i32.const 4048 + local.get $3 + local.get $1 + local.get $5 + i32.const 4016 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 + local.get $6 i32.add - local.set $0 - local.get $1 + local.get $3 + i32.store8 + local.get $0 i32.const 1 - i32.shl - local.get $6 i32.add - local.get $7 - i32.store16 + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 - i32.const 1 - i32.shl - local.tee $0 call $~lib/rt/itcms/__renew local.tee $1 i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -36892,10 +36720,8 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 - i32.const 1 - i32.shr_u i32.const 3 i32.ne if @@ -36906,9 +36732,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne if @@ -36919,9 +36745,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne if @@ -36932,9 +36758,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 i32.ne if @@ -36958,7 +36784,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) @@ -36968,51 +36794,51 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $5 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $5 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $5 i32.const 3 i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $5 i32.const 5 i32.const 5 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer - i32.const 4080 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -37025,71 +36851,69 @@ local.tee $3 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 + local.set $2 local.get $3 i32.const 12 - i32.const 7 + i32.const 6 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 1 i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 + local.get $1 i32.const 1 i32.shl - local.get $8 + local.get $7 i32.add - i32.load16_u - local.set $7 + i32.load16_s + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - i32.const 4080 + local.get $3 + local.get $1 + local.get $5 + i32.const 4048 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 i32.const 1 i32.shl local.get $6 i32.add - local.get $7 + local.get $3 i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 i32.const 1 @@ -37100,25 +36924,25 @@ i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -37129,7 +36953,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u @@ -37143,9 +36967,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne if @@ -37156,9 +36980,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne if @@ -37169,9 +36993,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int16Array#__get i32.const 5 i32.ne if @@ -37195,7 +37019,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) @@ -37205,51 +37029,51 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 + call $~lib/typedarray/Uint16Array#constructor + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $5 i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $5 i32.const 2 i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $5 i32.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $5 i32.const 5 i32.const 5 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer - i32.const 4112 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -37262,74 +37086,72 @@ local.tee $3 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - local.set $5 + local.set $2 local.get $3 i32.const 12 - i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 2 + local.get $2 + i32.const 1 i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 - i32.const 2 + local.get $1 + i32.const 1 i32.shl - local.get $8 + local.get $7 i32.add - i32.load - local.set $7 + i32.load16_u + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - i32.const 4112 + local.get $3 + local.get $1 + local.get $5 + i32.const 4080 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.tee $1 i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 2 i32.shl local.get $6 i32.add - local.get $7 - i32.store + local.get $3 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 - i32.const 2 + i32.const 1 i32.shl local.tee $0 call $~lib/rt/itcms/__renew @@ -37337,25 +37159,25 @@ i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -37366,9 +37188,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u i32.const 3 i32.ne @@ -37380,9 +37202,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne if @@ -37393,9 +37215,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne if @@ -37406,9 +37228,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 5 i32.ne if @@ -37432,7 +37254,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -37442,51 +37264,51 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 + call $~lib/typedarray/Int32Array#constructor + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Int32Array#__set + local.get $5 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Int32Array#__set + local.get $5 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Int32Array#__set + local.get $5 i32.const 3 i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Int32Array#__set + local.get $5 i32.const 5 i32.const 5 - call $~lib/typedarray/Uint32Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 4144 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -37499,71 +37321,69 @@ local.tee $3 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 + local.set $2 local.get $3 i32.const 12 - i32.const 9 + i32.const 8 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 2 i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 + local.get $1 i32.const 2 i32.shl - local.get $8 + local.get $7 i32.add i32.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - i32.const 4144 + local.get $3 + local.get $1 + local.get $5 + i32.const 4112 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 i32.const 2 i32.shl local.get $6 i32.add - local.get $7 + local.get $3 i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 i32.const 2 @@ -37574,25 +37394,25 @@ i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -37603,7 +37423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 i32.const 2 i32.shr_u @@ -37617,9 +37437,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne if @@ -37630,9 +37450,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne if @@ -37643,9 +37463,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 5 i32.ne if @@ -37669,7 +37489,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -37677,53 +37497,53 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) + (local $7 i32) (local $8 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 + call $~lib/typedarray/Uint32Array#constructor + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $5 i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $5 i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set + i32.const 5 + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 4176 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -37736,74 +37556,72 @@ local.tee $3 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.set $5 + local.set $2 local.get $3 i32.const 12 - i32.const 10 + i32.const 9 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 3 + local.get $2 + i32.const 2 i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 - i32.const 3 + local.get $1 + i32.const 2 i32.shl - local.get $8 + local.get $7 i32.add - i64.load - local.set $7 + i32.load + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - i32.const 4176 + local.get $3 + local.get $1 + local.get $5 + i32.const 4144 i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 3 + i32.const 2 i32.shl local.get $6 i32.add - local.get $7 - i64.store + local.get $3 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 - i32.const 3 + i32.const 2 i32.shl local.tee $0 call $~lib/rt/itcms/__renew @@ -37811,25 +37629,25 @@ i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -37840,9 +37658,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u i32.const 3 i32.ne @@ -37854,11 +37672,11 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 @@ -37867,11 +37685,11 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne if i32.const 0 i32.const 1568 @@ -37880,11 +37698,11 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne if i32.const 0 i32.const 1568 @@ -37906,61 +37724,61 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) + (local $7 i32) (local $8 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Int64Array#__set + local.get $5 i32.const 1 i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Int64Array#__set + local.get $5 i32.const 2 i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Int64Array#__set + local.get $5 i32.const 3 i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Int64Array#__set + local.get $5 i32.const 5 i64.const 5 - call $~lib/typedarray/Uint64Array#__set + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 4208 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -37970,74 +37788,72 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u - local.set $5 - local.get $3 + local.set $2 + local.get $6 i32.const 12 - i32.const 11 + i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 3 i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 + local.get $1 i32.const 3 i32.shl - local.get $8 + local.get $7 i32.add i64.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 - i32.const 4208 + local.get $3 + local.get $1 + local.get $5 + i32.const 4176 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 i32.const 3 i32.shl local.get $6 i32.add - local.get $7 + local.get $3 i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 i32.const 3 @@ -38048,25 +37864,25 @@ i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -38077,7 +37893,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u @@ -38091,9 +37907,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 - call $~lib/typedarray/Uint64Array#__get + call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne if @@ -38104,9 +37920,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 - call $~lib/typedarray/Uint64Array#__get + call $~lib/typedarray/Int64Array#__get i64.const 4 i64.ne if @@ -38117,9 +37933,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 - call $~lib/typedarray/Uint64Array#__get + call $~lib/typedarray/Int64Array#__get i64.const 5 i64.ne if @@ -38143,19 +37959,63 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayFilter<~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) - (local $7 f32) + (local $7 i32) (local $8 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 12 + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $5 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $5 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $5 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $5 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4208 + 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 @@ -38163,42 +38023,233 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i64.const 0 i64.store - local.get $1 + local.get $5 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + local.get $6 + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $5 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + i32.const 3 + i32.shl + local.get $7 + i32.add + i64.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $1 + local.get $5 + i32.const 4208 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + if + local.get $0 + i32.const 3 + i32.shl + local.get $6 + i32.add + local.get $3 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $8 + local.get $6 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 + i32.store + local.get $1 + if + local.get $8 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 + local.get $0 i32.store offset=8 + local.get $8 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 $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.get $8 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $8 + 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 + local.get $8 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 i32.const 6 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $5 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $5 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $5 i32.const 3 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $5 i32.const 5 f32.const 5 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4240 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -38207,74 +38258,72 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $3 + local.set $2 + local.get $6 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 2 i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 + local.get $1 i32.const 2 i32.shl - local.get $8 + local.get $7 i32.add f32.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 + local.get $3 + local.get $1 + local.get $5 i32.const 4240 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 i32.const 2 i32.shl local.get $6 i32.add - local.get $7 + local.get $3 f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 i32.const 2 @@ -38285,25 +38334,25 @@ i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -38314,7 +38363,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 i32.const 2 i32.shr_u @@ -38328,7 +38377,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 @@ -38341,7 +38390,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 @@ -38354,7 +38403,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 5 @@ -38384,58 +38433,58 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f64) + (local $7 i32) (local $8 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 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 6 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $5 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $5 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $5 i32.const 3 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $5 i32.const 5 f64.const 5 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4272 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -38444,74 +38493,72 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i64.const 0 i64.store - local.get $1 - local.tee $2 + local.get $5 i32.load offset=8 i32.const 3 i32.shr_u - local.set $5 - local.get $3 + local.set $2 + local.get $6 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 3 i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $1 + local.get $5 i32.load offset=4 - local.set $8 + local.set $7 loop $for-loop|0 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.lt_s if - local.get $4 + local.get $1 i32.const 3 i32.shl - local.get $8 + local.get $7 i32.add f64.load - local.set $7 + local.set $3 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $2 + local.get $3 + local.get $1 + local.get $5 i32.const 4272 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 i32.const 3 i32.shl local.get $6 i32.add - local.get $7 + local.get $3 f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end - local.get $3 + local.get $8 local.get $6 local.get $0 i32.const 3 @@ -38522,25 +38569,25 @@ i32.store local.get $1 if - local.get $3 + local.get $8 local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $8 local.get $0 i32.store offset=8 - local.get $3 + local.get $8 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 $3 + local.get $8 i32.store offset=8 - local.get $3 + local.get $8 i32.load offset=4 - local.get $3 + local.get $8 i32.load i32.sub if @@ -38551,7 +38598,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u @@ -38565,7 +38612,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 3 @@ -38578,7 +38625,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 @@ -38591,7 +38638,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -39036,6 +39083,1159 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (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) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=16 + local.get $3 + i32.const 7616 + i32.store + local.get $3 + i32.const 7628 + i32.load + local.tee $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $5 + 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 $6 + 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 + end + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=4 + local.set $7 + local.get $5 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $8 + i32.const 1 + i32.gt_u + if + local.get $8 + i32.const 1 + i32.shr_u + local.set $3 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + i32.const 3 + i32.shl + local.get $7 + i32.add + local.tee $9 + i64.load + local.set $2 + local.get $9 + local.get $8 + local.get $0 + i32.sub + i32.const 3 + i32.shl + local.get $7 + i32.add + local.tee $9 + i64.load + i64.store + local.get $9 + local.get $2 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $0 + call $~lib/typedarray/Int64Array#__get + 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 $6 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $6 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|01 + local.get $1 + local.get $6 + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $7 + i64.load + local.set $2 + local.get $7 + local.get $5 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $7 + i64.load + i64.store + local.get $7 + local.get $2 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|01 + end + end + end + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + 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 + local.get $3 + 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 + local.get $3 + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=16 + local.get $3 + i32.const 7616 + i32.store + local.get $3 + i32.const 7628 + i32.load + local.tee $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $6 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $5 + 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 $6 + 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 + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=4 + local.set $7 + local.get $5 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $8 + i32.const 1 + i32.gt_u + if + local.get $8 + i32.const 1 + i32.shr_u + local.set $3 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + i32.const 3 + i32.shl + local.get $7 + i32.add + local.tee $9 + i64.load + local.set $2 + local.get $9 + local.get $8 + local.get $0 + i32.sub + i32.const 3 + i32.shl + local.get $7 + i32.add + local.tee $9 + i64.load + i64.store + local.get $9 + local.get $2 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + 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 $6 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $6 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|01 + local.get $1 + local.get $6 + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $7 + i64.load + local.set $2 + local.get $7 + local.get $5 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $7 + i64.load + i64.store + local.get $7 + local.get $2 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|01 + end + end + end + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + call $~lib/typedarray/Uint64Array#__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 + local.get $3 + i32.const 2 + call $~lib/typedarray/Uint64Array#__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 + local.get $3 + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 f32) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=16 + local.get $3 + i32.const 7616 + i32.store + local.get $3 + i32.const 7628 + i32.load + local.tee $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $6 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $5 + 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 $6 + 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 + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=4 + local.set $7 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $8 + i32.const 1 + i32.gt_u + if + local.get $8 + i32.const 1 + i32.shr_u + local.set $3 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + local.get $7 + i32.add + local.tee $9 + f32.load + local.set $2 + local.get $9 + local.get $8 + local.get $0 + i32.sub + i32.const 2 + i32.shl + local.get $7 + i32.add + local.tee $9 + f32.load + f32.store + local.get $9 + local.get $2 + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $0 + call $~lib/typedarray/Float32Array#__get + 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 + local.get $6 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $6 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|01 + local.get $1 + local.get $6 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $7 + f32.load + local.set $2 + local.get $7 + local.get $5 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $7 + f32.load + f32.store + local.get $7 + local.get $2 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|01 + end + end + end + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 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 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=16 + local.get $3 + i32.const 7616 + i32.store + local.get $3 + i32.const 7628 + i32.load + local.tee $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $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 $6 + 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 + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=4 + local.set $7 + local.get $5 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $8 + i32.const 1 + i32.gt_u + if + local.get $8 + i32.const 1 + i32.shr_u + local.set $3 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + i32.const 3 + i32.shl + local.get $7 + i32.add + local.tee $9 + f64.load + local.set $2 + local.get $9 + local.get $8 + local.get $0 + i32.sub + i32.const 3 + i32.shl + local.get $7 + i32.add + local.tee $9 + f64.load + f64.store + local.get $9 + local.get $2 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|0 + end + end + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $0 + call $~lib/typedarray/Float64Array#__get + 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 + local.get $6 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $6 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|01 + local.get $1 + local.get $6 + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $7 + f64.load + local.set $2 + local.get $7 + local.get $5 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $7 + f64.load + f64.store + local.get $7 + local.get $2 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|01 + end + end + end + local.get $3 + i32.store offset=16 + local.get $3 + 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 + local.get $3 + 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 + local.get $3 + 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 + local.get $3 + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -39168,143 +40368,143 @@ (local $8 i32) (local $9 i32) (local $10 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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 $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 11312 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $8 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 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 $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Int8Array#constructor - local.tee $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $9 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 11312 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $9 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - local.get $9 i32.load offset=8 i32.const 11100 i32.load i32.const 3 i32.add i32.lt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 3 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $9 i32.const 11100 i32.load local.set $10 loop $for-loop|0 - local.get $1 + local.get $0 local.get $10 i32.lt_s if - local.get $1 - local.get $6 + local.get $0 + local.get $7 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add f32.load local.tee $4 @@ -39319,10 +40519,10 @@ i32.const 0 end i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -39331,59 +40531,59 @@ i32.const 15 i32.const 11392 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $9 local.get $8 + local.get $6 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 i32.const 15 i32.const 11424 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - local.get $9 + local.get $8 i32.load offset=8 i32.const 11196 i32.load i32.const 2 i32.add i32.lt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 2 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load local.set $6 i32.const 11196 i32.load local.set $7 - loop $for-loop|04 - local.get $0 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if local.get $0 - local.get $1 + local.get $3 i32.add - local.get $0 + local.get $3 i32.const 3 i32.shl local.get $6 @@ -39401,11 +40601,11 @@ i32.const 0 end i32.store8 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -39417,19 +40617,19 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $9 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $9 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $9 + local.get $8 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 @@ -39440,7 +40640,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer @@ -39557,143 +40757,143 @@ (local $8 i32) (local $9 i32) (local $10 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $8 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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 $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Uint8Array#constructor - local.tee $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $9 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11520 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $9 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - local.get $9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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 $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 11520 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $8 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 + local.get $8 i32.load offset=8 i32.const 11100 i32.load i32.const 3 i32.add i32.lt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 3 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $9 i32.const 11100 i32.load local.set $10 loop $for-loop|0 - local.get $1 + local.get $0 local.get $10 i32.lt_s if - local.get $1 - local.get $6 + local.get $0 + local.get $7 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add f32.load local.tee $4 @@ -39708,10 +40908,10 @@ i32.const 0 end i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -39720,59 +40920,59 @@ i32.const 63 i32.const 11600 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $9 local.get $8 + local.get $6 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 i32.const 63 i32.const 11632 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - local.get $9 + local.get $8 i32.load offset=8 i32.const 11196 i32.load i32.const 2 i32.add i32.lt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 2 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load local.set $6 i32.const 11196 i32.load local.set $7 - loop $for-loop|04 - local.get $0 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if local.get $0 - local.get $1 + local.get $3 i32.add - local.get $0 + local.get $3 i32.const 3 i32.shl local.get $6 @@ -39790,11 +40990,11 @@ i32.const 0 end i32.store8 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -39806,19 +41006,19 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $9 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $9 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $9 + local.get $8 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 @@ -39829,7 +41029,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer @@ -39937,152 +41137,154 @@ (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (local $0 i32) (local $1 i32) - (local $2 f32) - (local $3 f64) - (local $4 i32) - (local $5 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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 $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $7 + (local $12 i32) + (local $13 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $8 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i64.const 0 + i64.store offset=8 + local.get $6 + i32.const 0 + i32.store offset=16 + local.get $6 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $8 + i32.store offset=8 + local.get $8 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $8 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $8 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $11 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + block $folding-inner0 i32.const 11020 i32.load - local.get $8 + local.get $11 i32.load offset=8 i32.gt_s br_if $folding-inner0 - local.get $8 + local.get $11 i32.load offset=4 - local.set $9 + local.set $12 i32.const 11012 i32.load - local.set $10 + local.set $13 i32.const 11020 i32.load - local.set $11 + local.set $9 loop $for-loop|0 - local.get $1 - local.get $11 + local.get $0 + local.get $9 i32.lt_s if - local.get $1 - local.get $9 + local.get $0 + local.get $12 i32.add - local.get $1 + i32.const 255 + local.get $0 i32.const 2 i32.shl - local.get $10 + local.get $13 i32.add i32.load - local.tee $5 - i32.const 255 - local.get $5 + local.tee $10 i32.sub i32.const 31 i32.shr_s + local.get $10 i32.or - local.get $5 + local.get $10 i32.const 31 i32.shr_s i32.const -1 i32.xor i32.and i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -40091,19 +41293,17 @@ i32.const 63 i32.const 11728 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=16 - local.get $8 - local.get $1 + local.get $11 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $1 - local.get $8 + local.get $11 i32.load offset=8 i32.const 11100 i32.load @@ -40111,24 +41311,24 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $8 + local.get $11 i32.load offset=4 i32.const 3 i32.add - local.set $5 + local.set $0 i32.const 11092 i32.load local.set $9 i32.const 11100 i32.load local.set $10 - loop $for-loop|04 + loop $for-loop|05 local.get $1 local.get $10 i32.lt_s if + local.get $0 local.get $1 - local.get $5 i32.add local.get $1 i32.const 2 @@ -40136,15 +41336,15 @@ local.get $9 i32.add f32.load - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $2 + local.get $4 f32.min f32.max i32.trunc_f32_u @@ -40156,7 +41356,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|04 + br $for-loop|05 end end i32.const 10 @@ -40164,14 +41364,14 @@ i32.const 63 i32.const 11824 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=16 - local.get $8 - local.get $1 + local.get $11 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $8 + local.get $11 local.get $6 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> @@ -40180,17 +41380,17 @@ i32.const 63 i32.const 11856 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=16 - local.get $8 - local.get $1 + local.get $11 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - local.get $8 + local.get $11 i32.load offset=8 i32.const 11196 i32.load @@ -40198,40 +41398,40 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $8 + local.get $11 i32.load offset=4 i32.const 2 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load - local.set $5 + local.set $1 i32.const 11196 i32.load local.set $6 - loop $for-loop|08 - local.get $0 + loop $for-loop|011 + local.get $2 local.get $6 i32.lt_s if local.get $0 - local.get $1 + local.get $2 i32.add - local.get $0 + local.get $2 i32.const 3 i32.shl - local.get $5 + local.get $1 i32.add f64.load - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) f64.const 0 f64.const 255 - local.get $3 + local.get $5 f64.min f64.max i32.trunc_f64_u @@ -40239,11 +41439,11 @@ i32.const 0 end i32.store8 - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|08 + local.set $2 + br $for-loop|011 end end i32.const 10 @@ -40255,22 +41455,20 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $8 + local.get $11 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $8 + local.get $11 local.get $7 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + local.get $11 local.get $8 - local.get $4 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - i32.const 0 - local.set $0 - local.get $8 + local.get $11 i32.load offset=8 i32.const 11276 i32.load @@ -40278,35 +41476,35 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $8 + local.get $11 i32.load offset=4 i32.const 7 i32.add - local.set $1 + local.set $0 i32.const 11268 i32.load - local.set $4 + local.set $1 i32.const 11276 i32.load - local.set $5 - loop $for-loop|012 - local.get $0 - local.get $5 - i32.lt_s + local.set $2 + loop $for-loop|017 + local.get $2 + local.get $3 + i32.gt_s if local.get $0 - local.get $1 + local.get $3 i32.add - local.get $0 - local.get $4 + i32.const 255 + local.get $1 + local.get $3 i32.add i32.load8_s local.tee $6 - i32.const 255 - local.get $6 i32.sub i32.const 31 i32.shr_s + local.get $6 i32.or local.get $6 i32.const 31 @@ -40315,11 +41513,11 @@ i32.xor i32.and i32.store8 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|012 + local.set $3 + br $for-loop|017 end end i32.const 10 @@ -40331,7 +41529,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $8 + local.get $11 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer @@ -40400,9 +41598,9 @@ i32.add i32.load16_s local.tee $4 + local.get $5 local.get $1 i32.load offset=4 - local.get $5 i32.add i32.load16_s local.tee $5 @@ -40453,147 +41651,147 @@ (local $8 i32) (local $9 i32) (local $10 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $8 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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 $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Int16Array#constructor - local.tee $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $9 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 i32.const 1 - i32.const 64 - i32.const 11952 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $9 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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 $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 11952 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $8 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 i32.add - local.get $9 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 6 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $9 i32.const 11100 i32.load local.set $10 loop $for-loop|0 - local.get $1 + local.get $0 local.get $10 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add f32.load local.tee $4 @@ -40608,10 +41806,10 @@ i32.const 0 end i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -40620,27 +41818,27 @@ i32.const 64 i32.const 12048 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $9 local.get $8 + local.get $6 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 i32.const 64 i32.const 12096 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 @@ -40649,34 +41847,34 @@ i32.load i32.const 2 i32.add - local.get $9 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 4 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load local.set $6 i32.const 11196 i32.load local.set $7 - loop $for-loop|04 - local.get $0 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $0 + local.get $3 i32.const 1 i32.shl - local.get $1 - i32.add local.get $0 + i32.add + local.get $3 i32.const 3 i32.shl local.get $6 @@ -40694,11 +41892,11 @@ i32.const 0 end i32.store16 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -40710,19 +41908,19 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $9 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $9 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $9 + local.get $8 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 @@ -40733,7 +41931,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer @@ -40802,9 +42000,9 @@ i32.add i32.load16_u local.tee $4 + local.get $5 local.get $1 i32.load offset=4 - local.get $5 i32.add i32.load16_u local.tee $5 @@ -40855,147 +42053,147 @@ (local $8 i32) (local $9 i32) (local $10 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $8 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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 $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Uint16Array#constructor - local.tee $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $9 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 65 - i32.const 12240 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $9 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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 $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12240 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $8 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 i32.add - local.get $9 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 6 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $9 i32.const 11100 i32.load local.set $10 loop $for-loop|0 - local.get $1 + local.get $0 local.get $10 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add f32.load local.tee $4 @@ -41010,10 +42208,10 @@ i32.const 0 end i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -41022,27 +42220,27 @@ i32.const 65 i32.const 12336 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $9 local.get $8 + local.get $6 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 i32.const 65 i32.const 12384 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=16 - local.get $9 - local.get $1 + local.get $8 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 @@ -41051,34 +42249,34 @@ i32.load i32.const 2 i32.add - local.get $9 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s - br_if $folding-inner0 - local.get $9 + br_if $folding-inner1 + local.get $8 i32.load offset=4 i32.const 4 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load local.set $6 i32.const 11196 i32.load local.set $7 - loop $for-loop|04 - local.get $0 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $0 + local.get $3 i32.const 1 i32.shl - local.get $1 - i32.add local.get $0 + i32.add + local.get $3 i32.const 3 i32.shl local.get $6 @@ -41096,11 +42294,11 @@ i32.const 0 end i32.store16 - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -41112,19 +42310,19 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $9 - local.get $2 + local.get $8 + local.get $1 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $9 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $9 + local.get $8 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 @@ -41135,7 +42333,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $9 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer @@ -41204,9 +42402,9 @@ i32.add i32.load local.tee $4 + local.get $5 local.get $1 i32.load offset=4 - local.get $5 i32.add i32.load local.tee $5 @@ -41249,123 +42447,123 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f64) + (local $3 f32) + (local $4 f64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Int32Array#constructor - local.tee $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $9 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12528 - call $~lib/rt/__newArray - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=16 - local.get $9 - local.get $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + 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 $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $1 + 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 $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12528 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $9 + local.get $5 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 @@ -41375,7 +42573,7 @@ i32.const 2 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $9 i32.load offset=4 i32.const 12 @@ -41388,37 +42586,37 @@ i32.load local.set $11 loop $for-loop|0 - local.get $1 + local.get $0 local.get $11 i32.lt_s if - local.get $1 + local.get $10 + local.get $0 i32.const 2 i32.shl - local.tee $8 - local.get $10 + local.tee $5 i32.add f32.load - local.set $4 + local.set $3 + local.get $5 local.get $7 - local.get $8 i32.add - local.get $4 - local.get $4 + local.get $3 + local.get $3 f32.sub f32.const 0 f32.eq if (result i32) - local.get $4 + local.get $3 i32.trunc_f32_s else i32.const 0 end i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -41427,12 +42625,12 @@ i32.const 16 i32.const 12640 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=16 local.get $9 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> local.get $9 local.get $6 @@ -41442,12 +42640,12 @@ i32.const 16 i32.const 12704 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=16 local.get $9 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> global.get $~lib/memory/__stack_pointer i32.const 11184 @@ -41461,51 +42659,51 @@ i32.const 2 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load - local.set $6 + local.set $5 i32.const 11196 i32.load - local.set $7 - loop $for-loop|04 - local.get $0 - local.get $7 + local.set $6 + loop $for-loop|05 + local.get $2 + local.get $6 i32.lt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.get $1 - i32.add local.get $0 + i32.add + local.get $2 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add f64.load - local.tee $5 - local.get $5 + local.tee $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i32) - local.get $5 + local.get $4 i32.trunc_f64_s else i32.const 0 end i32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $2 + br $for-loop|05 end end i32.const 10 @@ -41521,10 +42719,10 @@ local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> local.get $9 - local.get $2 + local.get $8 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> local.get $9 - local.get $3 + local.get $1 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 @@ -41609,9 +42807,9 @@ i32.add i32.load local.tee $4 + local.get $5 local.get $1 i32.load offset=4 - local.get $5 i32.add i32.load local.tee $5 @@ -41621,156 +42819,156 @@ i32.const 12960 i32.store 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 i32) - (local $4 f32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 + 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) + (local $11 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Uint32Array#constructor - local.tee $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $9 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12896 - call $~lib/rt/__newArray - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=16 - local.get $9 - local.get $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + 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 $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $1 + 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 $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 12896 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $9 + local.get $5 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 @@ -41780,7 +42978,7 @@ i32.const 2 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $9 i32.load offset=4 i32.const 12 @@ -41793,37 +42991,37 @@ i32.load local.set $11 loop $for-loop|0 - local.get $1 + local.get $0 local.get $11 i32.lt_s if - local.get $1 + local.get $10 + local.get $0 i32.const 2 i32.shl - local.tee $8 - local.get $10 + local.tee $5 i32.add f32.load - local.set $4 + local.set $3 + local.get $5 local.get $7 - local.get $8 i32.add - local.get $4 - local.get $4 + local.get $3 + local.get $3 f32.sub f32.const 0 f32.eq if (result i32) - local.get $4 + local.get $3 i32.trunc_f32_u else i32.const 0 end i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -41832,12 +43030,12 @@ i32.const 66 i32.const 13008 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=16 local.get $9 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> local.get $9 local.get $6 @@ -41847,12 +43045,12 @@ i32.const 66 i32.const 13072 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=16 local.get $9 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer i32.const 11184 @@ -41866,51 +43064,51 @@ i32.const 2 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load - local.set $6 + local.set $5 i32.const 11196 i32.load - local.set $7 - loop $for-loop|04 - local.get $0 - local.get $7 + local.set $6 + loop $for-loop|05 + local.get $2 + local.get $6 i32.lt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.get $1 - i32.add local.get $0 + i32.add + local.get $2 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add f64.load - local.tee $5 - local.get $5 + local.tee $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i32) - local.get $5 + local.get $4 i32.trunc_f64_u else i32.const 0 end i32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $2 + br $for-loop|05 end end i32.const 10 @@ -41926,10 +43124,10 @@ local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> local.get $9 - local.get $2 + local.get $8 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> local.get $9 - local.get $3 + local.get $1 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 @@ -42015,9 +43213,9 @@ i32.add i64.load local.tee $5 + local.get $4 local.get $1 i32.load offset=4 - local.get $4 i32.add i64.load local.tee $6 @@ -42068,112 +43266,112 @@ (local $8 i32) (local $9 i32) (local $10 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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 $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Int64Array#constructor - local.tee $8 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $8 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 13264 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $8 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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 $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 13264 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $8 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 @@ -42183,7 +43381,7 @@ i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $8 i32.load offset=4 i32.const 24 @@ -42196,16 +43394,16 @@ i32.load local.set $6 loop $for-loop|0 - local.get $1 + local.get $0 local.get $6 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $9 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $10 @@ -42223,10 +43421,10 @@ i64.const 0 end i64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -42235,12 +43433,12 @@ i32.const 67 i32.const 13424 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=16 local.get $8 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> local.get $8 local.get $7 @@ -42250,12 +43448,12 @@ i32.const 67 i32.const 13536 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=16 local.get $8 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 @@ -42269,32 +43467,32 @@ i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load local.set $6 i32.const 11196 i32.load local.set $7 - loop $for-loop|04 - local.get $0 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $0 + local.get $6 + local.get $3 i32.const 3 i32.shl local.tee $9 - local.get $6 i32.add f64.load local.set $4 - local.get $1 + local.get $0 local.get $9 i32.add local.get $4 @@ -42309,11 +43507,11 @@ i64.const 0 end i64.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -42329,10 +43527,10 @@ local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> local.get $8 - local.get $2 + local.get $1 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> local.get $8 - local.get $3 + local.get $2 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 @@ -42418,9 +43616,9 @@ i32.add i64.load local.tee $5 + local.get $4 local.get $1 i32.load offset=4 - local.get $4 i32.add i64.load local.tee $6 @@ -42462,121 +43660,121 @@ (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> (local $0 i32) (local $1 i32) - (local $2 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) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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 $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 + (local $2 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 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $3 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - 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/Uint64Array#constructor - local.tee $8 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $8 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13872 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $8 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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 $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13872 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $8 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + block $folding-inner1 i32.const 11100 i32.load i32.const 3 @@ -42586,7 +43784,7 @@ i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $8 i32.load offset=4 i32.const 24 @@ -42599,16 +43797,16 @@ i32.load local.set $6 loop $for-loop|0 - local.get $1 + local.get $0 local.get $6 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $9 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $10 @@ -42626,10 +43824,10 @@ i64.const 0 end i64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -42638,12 +43836,12 @@ i32.const 68 i32.const 14032 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=16 local.get $8 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> local.get $8 local.get $7 @@ -42653,12 +43851,12 @@ i32.const 68 i32.const 14144 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=16 local.get $8 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 @@ -42672,32 +43870,32 @@ i32.const 3 i32.shr_u i32.gt_s - br_if $folding-inner0 + br_if $folding-inner1 local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $1 + local.set $0 i32.const 11188 i32.load local.set $6 i32.const 11196 i32.load local.set $7 - loop $for-loop|04 - local.get $0 + loop $for-loop|05 + local.get $3 local.get $7 i32.lt_s if - local.get $0 + local.get $6 + local.get $3 i32.const 3 i32.shl local.tee $9 - local.get $6 i32.add f64.load local.set $4 - local.get $1 + local.get $0 local.get $9 i32.add local.get $4 @@ -42712,11 +43910,11 @@ i64.const 0 end i64.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $3 + br $for-loop|05 end end i32.const 10 @@ -42732,10 +43930,10 @@ local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> local.get $8 - local.get $2 + local.get $1 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> local.get $8 - local.get $3 + local.get $2 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 @@ -42821,9 +44019,9 @@ i32.add f32.load local.tee $5 + local.get $4 local.get $1 i32.load offset=4 - local.get $4 i32.add f32.load local.tee $6 @@ -42875,95 +44073,96 @@ (local $9 i32) (local $10 i32) (local $11 i32) - block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - 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 $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $8 + (local $12 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $8 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $8 - 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 $9 - i32.store offset=8 - local.get $9 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $9 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $9 - 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 $10 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i64.const 0 + i64.store offset=8 + local.get $5 + i32.const 0 + i32.store offset=16 + local.get $5 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + 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 $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $8 + i32.store offset=8 + local.get $8 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $8 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $8 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + block $folding-inner0 i32.const 11020 i32.load local.get $10 @@ -42974,34 +44173,34 @@ br_if $folding-inner0 local.get $10 i32.load offset=4 - local.set $5 + local.set $9 i32.const 11012 i32.load - local.set $6 + local.set $11 i32.const 11020 i32.load - local.set $11 + local.set $12 loop $for-loop|0 - local.get $2 - local.get $11 + local.get $0 + local.get $12 i32.lt_s if - local.get $2 + local.get $9 + local.get $0 i32.const 2 i32.shl - local.tee $4 - local.get $5 + local.tee $5 i32.add - local.get $4 - local.get $6 + local.get $5 + local.get $11 i32.add i32.load f32.convert_i32_s f32.store - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -43010,12 +44209,12 @@ i32.const 61 i32.const 14480 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 local.get $10 - local.get $2 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer i32.const 11088 @@ -43029,14 +44228,14 @@ i32.const 61 i32.const 14592 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 local.get $10 - local.get $2 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $7 + local.get $6 i32.load offset=8 i32.const 3 i32.shr_u @@ -43052,38 +44251,38 @@ i32.load offset=4 i32.const 24 i32.add - local.set $2 - local.get $7 + local.set $0 + local.get $6 i32.load offset=4 - local.set $4 - local.get $7 + local.set $5 + local.get $6 i32.load offset=8 i32.const 3 i32.shr_u - local.set $5 - loop $for-loop|01 - local.get $3 - local.get $5 + local.set $6 + loop $for-loop|02 + local.get $1 + local.get $6 i32.lt_s if - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add - local.get $3 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $5 i32.add i64.load f32.convert_i64_s f32.store - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|01 + local.set $1 + br $for-loop|02 end end i32.const 10 @@ -43091,16 +44290,14 @@ i32.const 61 i32.const 14656 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 local.get $10 - local.get $2 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $2 - local.get $8 + local.get $7 i32.load offset=8 local.get $10 i32.load offset=8 @@ -43110,14 +44307,14 @@ br_if $folding-inner0 local.get $10 i32.load offset=4 - local.set $3 - local.get $8 + local.set $0 + local.get $7 i32.load offset=4 - local.set $4 - local.get $8 + local.set $1 + local.get $7 i32.load offset=8 local.set $5 - loop $for-loop|03 + loop $for-loop|06 local.get $2 local.get $5 i32.lt_s @@ -43125,10 +44322,10 @@ local.get $2 i32.const 2 i32.shl - local.get $3 + local.get $0 i32.add + local.get $1 local.get $2 - local.get $4 i32.add i32.load8_u f32.convert_i32_u @@ -43137,10 +44334,10 @@ i32.const 1 i32.add local.set $2 - br $for-loop|03 + br $for-loop|06 end end - local.get $9 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u @@ -43156,38 +44353,38 @@ i32.load offset=4 i32.const 16 i32.add - local.set $2 - local.get $9 + local.set $0 + local.get $8 i32.load offset=4 - local.set $3 - local.get $9 + local.set $1 + local.get $8 i32.load offset=8 i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|05 - local.get $0 - local.get $4 - i32.lt_s + local.set $2 + loop $for-loop|010 + local.get $2 + local.get $3 + i32.gt_s if - local.get $0 + local.get $3 i32.const 2 i32.shl - local.get $2 - i32.add local.get $0 + i32.add + local.get $3 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.add i32.load16_s f32.convert_i32_s f32.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|05 + local.set $3 + br $for-loop|010 end end global.get $~lib/memory/__stack_pointer @@ -43210,31 +44407,31 @@ local.set $0 i32.const 11268 i32.load - local.set $2 + local.set $1 i32.const 11276 i32.load - local.set $3 - loop $for-loop|09 - local.get $1 - local.get $3 - i32.lt_s + local.set $2 + loop $for-loop|016 + local.get $2 + local.get $4 + i32.gt_s if - local.get $1 + local.get $4 i32.const 2 i32.shl local.get $0 i32.add local.get $1 - local.get $2 + local.get $4 i32.add i32.load8_s f32.convert_i32_s f32.store - local.get $1 + local.get $4 i32.const 1 i32.add - local.set $1 - br $for-loop|09 + local.set $4 + br $for-loop|016 end end i32.const 10 @@ -43316,9 +44513,9 @@ i32.add f64.load local.tee $5 + local.get $4 local.get $1 i32.load offset=4 - local.get $4 i32.add f64.load local.tee $6 @@ -43352,149 +44549,151 @@ 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) - (local $8 i32) - (local $9 i32) - (local $10 i32) + 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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i64.const 0 + i64.store offset=8 + local.get $6 + i32.const 0 + i32.store offset=16 + local.get $6 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $9 + i32.store + local.get $9 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $9 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $9 + 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=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + 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=8 + local.get $7 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $7 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + 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/Float64Array#constructor + local.tee $10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 block $folding-inner0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i64.const 0 - i64.store offset=8 - local.get $4 - i32.const 0 - i32.store offset=16 - local.get $4 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - 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 $6 - i32.store offset=8 - local.get $6 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 - 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 $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 i32.const 11020 i32.load - local.get $7 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $7 + local.get $10 i32.load offset=4 - local.set $8 + local.set $11 i32.const 11012 i32.load - local.set $9 + local.set $12 i32.const 11020 i32.load - local.set $10 + local.set $8 loop $for-loop|0 - local.get $1 - local.get $10 + local.get $0 + local.get $8 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $8 + local.get $11 i32.add - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $9 + local.get $12 i32.add i32.load f64.convert_i32_s f64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -43503,53 +44702,51 @@ i32.const 62 i32.const 14784 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=16 - local.get $7 - local.get $1 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11100 i32.load i32.const 3 i32.add - local.get $7 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $7 + local.get $10 i32.load offset=4 i32.const 24 i32.add - local.set $8 + local.set $0 i32.const 11092 i32.load - local.set $9 + local.set $8 i32.const 11100 i32.load - local.set $10 - loop $for-loop|04 + local.set $11 + loop $for-loop|05 local.get $1 - local.get $10 + local.get $11 i32.lt_s if local.get $1 i32.const 3 i32.shl - local.get $8 + local.get $0 i32.add local.get $1 i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add f32.load f64.promote_f32 @@ -43558,7 +44755,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|04 + br $for-loop|05 end end i32.const 10 @@ -43566,60 +44763,60 @@ i32.const 62 i32.const 14944 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=16 - local.get $7 - local.get $1 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $4 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $7 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $7 + local.get $10 i32.load offset=4 i32.const 48 i32.add - local.set $1 - local.get $4 + local.set $0 + local.get $9 i32.load offset=4 - local.set $8 - local.get $4 + local.set $1 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u - local.set $4 - loop $for-loop|06 - local.get $3 - local.get $4 + local.set $8 + loop $for-loop|09 + local.get $5 + local.get $8 i32.lt_s if - local.get $3 + local.get $0 + local.get $5 i32.const 3 i32.shl local.tee $9 - local.get $1 i32.add - local.get $8 + local.get $1 local.get $9 i32.add i64.load f64.convert_i64_s f64.store - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 - br $for-loop|06 + local.set $5 + br $for-loop|09 end end i32.const 10 @@ -43627,103 +44824,101 @@ i32.const 62 i32.const 15056 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=16 - local.get $7 - local.get $1 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $1 - local.get $5 + local.get $6 i32.load offset=8 - local.get $7 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $7 + local.get $10 i32.load offset=4 - local.set $3 - local.get $5 + local.set $0 + local.get $6 i32.load offset=4 - local.set $4 - local.get $5 + local.set $1 + local.get $6 i32.load offset=8 local.set $5 - loop $for-loop|08 - local.get $1 + loop $for-loop|013 + local.get $2 local.get $5 i32.lt_s if - local.get $1 + local.get $2 i32.const 3 i32.shl - local.get $3 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $2 i32.add i32.load8_u f64.convert_i32_u f64.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|08 + local.set $2 + br $for-loop|013 end end - local.get $6 + local.get $7 i32.load offset=8 i32.const 1 i32.shr_u i32.const 4 i32.add - local.get $7 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $7 + local.get $10 i32.load offset=4 i32.const 32 i32.add - local.set $1 - local.get $6 + local.set $0 + local.get $7 i32.load offset=4 - local.set $3 - local.get $6 + local.set $1 + local.get $7 i32.load offset=8 i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|010 - local.get $0 - local.get $4 - i32.lt_s + local.set $2 + loop $for-loop|017 + local.get $2 + local.get $3 + i32.gt_s if - local.get $0 + local.get $3 i32.const 3 i32.shl - local.get $1 - i32.add local.get $0 + i32.add + local.get $3 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.add i32.load16_s f64.convert_i32_s f64.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|010 + local.set $3 + br $for-loop|017 end end global.get $~lib/memory/__stack_pointer @@ -43733,13 +44928,13 @@ i32.load i32.const 7 i32.add - local.get $7 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $7 + local.get $10 i32.load offset=4 i32.const 56 i32.add @@ -43749,28 +44944,28 @@ local.set $1 i32.const 11276 i32.load - local.set $3 - loop $for-loop|014 + local.set $2 + loop $for-loop|023 local.get $2 - local.get $3 - i32.lt_s + local.get $4 + i32.gt_s if - local.get $2 + local.get $4 i32.const 3 i32.shl local.get $0 i32.add local.get $1 - local.get $2 + local.get $4 i32.add i32.load8_s f64.convert_i32_s f64.store - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 - br $for-loop|014 + local.set $4 + br $for-loop|023 end end i32.const 10 @@ -43782,7 +44977,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $7 + local.get $10 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer @@ -43809,56 +45004,112 @@ (local $7 f64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i32) - (local $13 i64) - (local $14 f32) - (local $15 f64) + (local $13 i32) + (local $14 i32) + (local $15 i64) + (local $16 i32) + (local $17 f32) + (local $18 f64) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + (local $42 i32) + (local $43 i32) + (local $44 i32) + (local $45 i32) + (local $46 i32) + (local $47 i32) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + (local $53 i32) + (local $54 i32) + (local $55 i32) + (local $56 i32) + (local $57 i32) + (local $58 i32) + (local $59 i32) + (local $60 i64) + (local $61 i32) + (local $62 i32) + (local $63 i32) + (local $64 i64) + (local $65 i64) + (local $66 f32) + (local $67 f64) + (local $68 i32) + (local $69 i32) + (local $70 i32) + (local $71 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner35 - block $folding-inner34 - block $folding-inner33 - block $folding-inner32 - block $folding-inner31 - block $folding-inner30 - block $folding-inner29 - block $folding-inner28 - block $folding-inner27 - block $folding-inner26 - block $folding-inner25 - block $folding-inner24 - block $folding-inner23 - block $folding-inner22 - block $folding-inner21 - block $folding-inner20 - block $folding-inner19 - block $folding-inner18 - block $folding-inner17 - block $folding-inner16 - block $folding-inner15 - block $folding-inner14 - block $folding-inner13 - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 + block $folding-inner41 + block $folding-inner40 + block $folding-inner39 + block $folding-inner38 + block $folding-inner37 + block $folding-inner36 + block $folding-inner35 + block $folding-inner34 + block $folding-inner33 + block $folding-inner32 + block $folding-inner31 + block $folding-inner30 + block $folding-inner29 + block $folding-inner28 + block $folding-inner27 + block $folding-inner26 + block $folding-inner25 + block $folding-inner24 + block $folding-inner23 + block $folding-inner22 + block $folding-inner21 + block $folding-inner19 + block $folding-inner16 + block $folding-inner20 + block $folding-inner18 + block $folding-inner17 + block $folding-inner15 + block $folding-inner14 + block $folding-inner13 + block $folding-inner12 + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -44252,29 +45503,29 @@ global.get $~lib/memory/__stack_pointer i32.const 5 call $~lib/typedarray/Int8Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $3 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $3 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 1 i32.const 3 @@ -44288,7 +45539,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $3 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -44300,7 +45551,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 0 i32.const 0 i32.const 2147483647 @@ -44314,7 +45565,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $3 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -44326,7 +45577,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 1 i32.const 0 i32.const -3 @@ -44340,7 +45591,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $3 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -44352,7 +45603,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 2 i32.const -2 i32.const 2147483647 @@ -44366,7 +45617,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $3 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -44378,7 +45629,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 0 i32.const 1 i32.const 0 @@ -44392,7 +45643,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $3 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -44405,18 +45656,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#subarray - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int8Array#fill - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.ne @@ -44428,9 +45679,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load i32.sub i32.const 1 @@ -44443,7 +45694,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.ne @@ -44464,7 +45715,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -44485,7 +45736,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 + local.get $3 local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -44500,58 +45751,58 @@ global.get $~lib/memory/__stack_pointer i32.const 5 call $~lib/typedarray/Int32Array#constructor - local.tee $4 + local.tee $6 i32.store offset=8 - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.load offset=4 - local.set $2 + local.set $3 i32.const 1 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 1 i32.gt_u select local.set $0 i32.const 3 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.const 3 i32.gt_u select - local.set $1 + local.set $2 loop $for-loop|0 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.const 1 i32.store @@ -44571,7 +45822,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -44583,32 +45834,32 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.load offset=4 - local.set $2 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 + local.set $2 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|01 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|01 end end @@ -44621,7 +45872,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -44633,33 +45884,33 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 local.set $0 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u i32.const 3 i32.sub - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select - local.set $1 + local.set $2 loop $for-loop|03 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.const 1 i32.store @@ -44679,7 +45930,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -44691,10 +45942,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u @@ -44707,23 +45958,23 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $for-loop|05 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 i32.add i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|05 end end @@ -44736,7 +45987,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -44748,11 +45999,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.load offset=4 - local.set $1 + local.set $2 i32.const 1 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u @@ -44770,7 +46021,7 @@ local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.const 0 i32.store @@ -44790,7 +46041,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -44803,42 +46054,42 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $3 + local.tee $4 i32.store offset=12 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 + local.set $2 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|09 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|09 end end - local.get $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -44852,9 +46103,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load offset=4 - local.get $3 + local.get $4 i32.load i32.sub i32.const 4 @@ -44867,7 +46118,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load offset=8 i32.const 12 i32.ne @@ -44888,7 +46139,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $3 + local.get $4 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -44909,7 +46160,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $4 + local.get $6 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45157,16 +46408,16 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $2 + local.tee $3 i32.store local.get $0 i32.const 0 i32.const 3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45177,7 +46428,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45190,7 +46441,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45201,9 +46452,9 @@ i32.const 3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45214,7 +46465,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45227,7 +46478,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45238,9 +46489,9 @@ i32.const 2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45251,7 +46502,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45264,7 +46515,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45275,9 +46526,9 @@ i32.const 2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45288,7 +46539,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45301,7 +46552,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45312,9 +46563,9 @@ i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45325,7 +46576,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45338,7 +46589,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45349,9 +46600,9 @@ i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45362,7 +46613,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45375,7 +46626,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45386,9 +46637,9 @@ i32.const 2 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45399,7 +46650,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45412,7 +46663,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45423,9 +46674,9 @@ i32.const -2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45436,7 +46687,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45449,7 +46700,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45460,9 +46711,9 @@ i32.const -2 i32.const -1 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45473,7 +46724,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45486,7 +46737,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45497,9 +46748,9 @@ i32.const -3 i32.const -2 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45510,7 +46761,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45523,7 +46774,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45534,9 +46785,9 @@ i32.const -3 i32.const -1 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45547,7 +46798,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45560,7 +46811,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice @@ -45571,9 +46822,9 @@ i32.const -3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=20 i32.const 5 i32.const 2 @@ -45584,7 +46835,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -45599,36 +46850,36 @@ global.get $~lib/memory/__stack_pointer i32.const 5 call $~lib/typedarray/Int32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $3 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $3 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $3 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $3 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $1 + local.tee $2 i32.store offset=16 - local.get $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -45642,9 +46893,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load i32.sub i32.const 4 @@ -45657,7 +46908,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=8 i32.const 12 i32.ne @@ -45670,7 +46921,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#slice @@ -45742,7 +46993,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#slice @@ -45801,14 +47052,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice local.tee $0 i32.store offset=24 local.get $0 - local.get $2 + local.get $3 i32.eq if i32.const 0 @@ -45822,7 +47073,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -45840,9 +47091,9 @@ local.get $0 i32.load i32.sub - local.get $2 + local.get $3 i32.load offset=4 - local.get $2 + local.get $3 i32.load i32.sub i32.ne @@ -45856,7 +47107,7 @@ end local.get $0 i32.load offset=8 - local.get $2 + local.get $3 i32.load offset=8 i32.ne if @@ -45874,7 +47125,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -45899,8 +47150,6 @@ global.get $~lib/memory/__stack_pointer i32.const 2896 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -45908,33 +47157,33 @@ i32.load offset=8 local.set $2 loop $for-loop|010 - local.get $0 local.get $2 - i32.lt_s + local.get $10 + i32.gt_s if - local.get $0 local.get $3 + local.get $10 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $9 - local.get $1 + local.get $53 local.get $0 + local.get $10 local.get $4 i32.const 2896 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 + local.set $53 + local.get $10 i32.const 1 i32.add - local.set $0 + local.set $10 br $for-loop|010 end end - local.get $9 + local.get $53 i32.const 255 i32.and i32.const 6 @@ -45951,7 +47200,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -45976,44 +47225,40 @@ global.get $~lib/memory/__stack_pointer i32.const 2928 i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - loop $for-loop|04 - local.get $0 + loop $for-loop|0511 local.get $2 - i32.lt_s + local.get $8 + i32.gt_s if - local.get $0 local.get $3 + local.get $8 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $9 - local.get $1 + local.get $54 local.get $0 + local.get $8 local.get $4 i32.const 2928 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 + local.set $54 + local.get $8 i32.const 1 i32.add - local.set $0 - br $for-loop|04 + local.set $8 + br $for-loop|0511 end end - local.get $9 + local.get $54 i32.const 255 i32.and i32.const 6 @@ -46030,7 +47275,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46055,44 +47300,40 @@ global.get $~lib/memory/__stack_pointer i32.const 2960 i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - loop $for-loop|08 - local.get $0 + loop $for-loop|013 local.get $2 - i32.lt_s + local.get $9 + i32.gt_s if - local.get $0 local.get $3 + local.get $9 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $9 - local.get $1 + local.get $55 local.get $0 + local.get $9 local.get $4 i32.const 2960 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 + local.set $55 + local.get $9 i32.const 1 i32.add - local.set $0 - br $for-loop|08 + local.set $9 + br $for-loop|013 end end - local.get $9 + local.get $55 i32.const 255 i32.and i32.const 6 @@ -46109,7 +47350,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46134,10 +47375,6 @@ global.get $~lib/memory/__stack_pointer i32.const 2992 i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 local.get $4 i32.load offset=4 local.set $3 @@ -46146,36 +47383,36 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|01011 - local.get $0 + loop $for-loop|017 local.get $2 - i32.lt_s + local.get $12 + i32.gt_s if - local.get $0 + local.get $12 i32.const 1 i32.shl local.get $3 i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $9 - local.get $1 + local.get $56 local.get $0 + local.get $12 local.get $4 i32.const 2992 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 + local.set $56 + local.get $12 i32.const 1 i32.add - local.set $0 - br $for-loop|01011 + local.set $12 + br $for-loop|017 end end - local.get $9 + local.get $56 i32.const 65535 i32.and i32.const 6 @@ -46192,7 +47429,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46217,10 +47454,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3024 i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 local.get $4 i32.load offset=4 local.set $3 @@ -46229,36 +47462,36 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|013 - local.get $0 + loop $for-loop|022 local.get $2 - i32.lt_s + local.get $19 + i32.gt_s if - local.get $0 + local.get $19 i32.const 1 i32.shl local.get $3 i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $9 - local.get $1 + local.get $57 local.get $0 + local.get $19 local.get $4 i32.const 3024 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 + local.set $57 + local.get $19 i32.const 1 i32.add - local.set $0 - br $for-loop|013 + local.set $19 + br $for-loop|022 end end - local.get $9 + local.get $57 i32.const 65535 i32.and i32.const 6 @@ -46275,7 +47508,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46300,10 +47533,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3056 i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 local.get $4 i32.load offset=4 local.set $3 @@ -46312,36 +47541,36 @@ i32.const 2 i32.shr_u local.set $2 - loop $for-loop|016 - local.get $0 + loop $for-loop|027 local.get $2 - i32.lt_s + local.get $20 + i32.gt_s if - local.get $0 + local.get $20 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $9 - local.get $1 + local.get $58 local.get $0 + local.get $20 local.get $4 i32.const 3056 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 + local.set $58 + local.get $20 i32.const 1 i32.add - local.set $0 - br $for-loop|016 + local.set $20 + br $for-loop|027 end end - local.get $9 + local.get $58 i32.const 6 i32.ne br_if $folding-inner1 @@ -46356,7 +47585,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46381,10 +47610,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3088 i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 local.get $4 i32.load offset=4 local.set $3 @@ -46393,36 +47618,36 @@ i32.const 2 i32.shr_u local.set $2 - loop $for-loop|021 - local.get $0 + loop $for-loop|032 local.get $2 - i32.lt_s + local.get $32 + i32.gt_s if - local.get $0 + local.get $32 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $9 - local.get $1 + local.get $59 local.get $0 + local.get $32 local.get $4 i32.const 3088 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 + local.set $59 + local.get $32 i32.const 1 i32.add - local.set $0 - br $for-loop|021 + local.set $32 + br $for-loop|032 end end - local.get $9 + local.get $59 i32.const 6 i32.ne br_if $folding-inner1 @@ -46437,7 +47662,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46462,8 +47687,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3120 i32.store offset=4 - i32.const 0 - local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -46471,37 +47694,37 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|024 + local.set $0 + loop $for-loop|037 local.get $0 - local.get $1 - i32.lt_s + local.get $33 + i32.gt_s if - local.get $0 + local.get $33 i32.const 3 i32.shl local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $0 + local.get $15 + local.get $11 + local.get $33 local.get $3 i32.const 3120 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $0 + local.set $15 + local.get $33 i32.const 1 i32.add - local.set $0 - br $for-loop|024 + local.set $33 + br $for-loop|037 end end - local.get $13 + local.get $15 i64.const 6 i64.ne br_if $folding-inner1 @@ -46516,7 +47739,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46541,10 +47764,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3152 i32.store offset=4 - i32.const 0 - local.set $0 - i64.const 0 - local.set $13 local.get $3 i32.load offset=4 local.set $2 @@ -46552,37 +47771,37 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|027 + local.set $0 + loop $for-loop|042 local.get $0 - local.get $1 - i32.lt_s + local.get $34 + i32.gt_s if - local.get $0 + local.get $34 i32.const 3 i32.shl local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $0 + local.get $60 + local.get $11 + local.get $34 local.get $3 i32.const 3152 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $0 + local.set $60 + local.get $34 i32.const 1 i32.add - local.set $0 - br $for-loop|027 + local.set $34 + br $for-loop|042 end end - local.get $13 + local.get $60 i64.const 6 i64.ne br_if $folding-inner1 @@ -46597,7 +47816,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46622,8 +47841,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3184 i32.store offset=4 - i32.const 0 - local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -46631,13 +47848,13 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|030 + local.set $0 + loop $for-loop|047 local.get $0 - local.get $1 - i32.lt_s + local.get $35 + i32.gt_s if - local.get $0 + local.get $35 i32.const 2 i32.shl local.get $2 @@ -46646,22 +47863,22 @@ local.set $5 i32.const 4 global.set $~argumentsLength - local.get $14 + local.get $17 local.get $5 - local.get $0 + local.get $35 local.get $3 i32.const 3184 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $14 - local.get $0 + local.set $17 + local.get $35 i32.const 1 i32.add - local.set $0 - br $for-loop|030 + local.set $35 + br $for-loop|047 end end - local.get $14 + local.get $17 f32.const 6 f32.ne br_if $folding-inner1 @@ -46676,7 +47893,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46701,8 +47918,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3216 i32.store offset=4 - i32.const 0 - local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -46710,13 +47925,13 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|033 + local.set $0 + loop $for-loop|052 local.get $0 - local.get $1 - i32.lt_s + local.get $36 + i32.gt_s if - local.get $0 + local.get $36 i32.const 3 i32.shl local.get $2 @@ -46725,22 +47940,22 @@ local.set $7 i32.const 4 global.set $~argumentsLength - local.get $15 + local.get $18 local.get $7 - local.get $0 + local.get $36 local.get $3 i32.const 3216 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $15 - local.get $0 + local.set $18 + local.get $36 i32.const 1 i32.add - local.set $0 - br $for-loop|033 + local.set $36 + br $for-loop|052 end end - local.get $15 + local.get $18 f64.const 6 f64.ne br_if $folding-inner1 @@ -46755,7 +47970,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -46806,7 +48021,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -46857,7 +48072,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -46908,7 +48123,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -46959,7 +48174,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -47010,7 +48225,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -47061,7 +48276,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -47112,7 +48327,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -47163,7 +48378,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -47214,7 +48429,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -47265,7 +48480,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -47316,7 +48531,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47341,8 +48556,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3248 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -47350,35 +48563,35 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - loop $for-loop|039 - local.get $1 + local.set $0 + loop $for-loop|059 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_s local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 + local.get $61 local.get $2 - local.get $1 + local.get $0 local.get $4 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $61 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|039 + local.set $0 + br $for-loop|059 end end - local.get $0 + local.get $61 i32.const 255 i32.and i32.const 6 @@ -47395,7 +48608,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47420,8 +48633,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3280 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -47429,35 +48640,35 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - loop $for-loop|042 - local.get $1 + local.set $0 + loop $for-loop|064 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 + local.get $62 local.get $2 - local.get $1 + local.get $0 local.get $4 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $62 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|042 + local.set $0 + br $for-loop|064 end end - local.get $0 + local.get $62 i32.const 255 i32.and i32.const 6 @@ -47474,7 +48685,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47499,8 +48710,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3312 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -47508,35 +48717,35 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - loop $for-loop|046 - local.get $1 + local.set $0 + loop $for-loop|071 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 + local.get $63 local.get $2 - local.get $1 + local.get $0 local.get $4 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $63 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|046 + local.set $0 + br $for-loop|071 end end - local.get $0 + local.get $63 i32.const 255 i32.and i32.const 6 @@ -47553,7 +48762,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47578,8 +48787,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3344 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -47589,13 +48796,13 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|049 - local.get $1 + local.set $0 + loop $for-loop|076 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -47604,22 +48811,22 @@ local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 + local.get $68 local.get $2 - local.get $1 + local.get $0 local.get $4 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $68 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|049 + local.set $0 + br $for-loop|076 end end - local.get $0 + local.get $68 i32.const 65535 i32.and i32.const 6 @@ -47636,7 +48843,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47661,8 +48868,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3376 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -47672,13 +48877,13 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|052 - local.get $1 + local.set $0 + loop $for-loop|081 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -47687,22 +48892,22 @@ local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 + local.get $69 local.get $2 - local.get $1 + local.get $0 local.get $4 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $69 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|052 + local.set $0 + br $for-loop|081 end end - local.get $0 + local.get $69 i32.const 65535 i32.and i32.const 6 @@ -47719,7 +48924,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47744,8 +48949,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3408 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -47755,13 +48958,13 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|055 - local.get $1 + local.set $0 + loop $for-loop|086 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -47770,22 +48973,22 @@ local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 + local.get $70 local.get $2 - local.get $1 + local.get $0 local.get $4 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $70 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|055 + local.set $0 + br $for-loop|086 end end - local.get $0 + local.get $70 i32.const 6 i32.ne br_if $folding-inner5 @@ -47800,7 +49003,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47825,8 +49028,6 @@ global.get $~lib/memory/__stack_pointer i32.const 3440 i32.store offset=4 - i32.const 0 - local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -47836,13 +49037,13 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|058 - local.get $1 + local.set $0 + loop $for-loop|091 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -47851,22 +49052,22 @@ local.set $2 i32.const 4 global.set $~argumentsLength - local.get $0 + local.get $71 local.get $2 - local.get $1 + local.get $0 local.get $4 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $1 + local.set $71 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|058 + local.set $0 + br $for-loop|091 end end - local.get $0 + local.get $71 i32.const 6 i32.ne br_if $folding-inner5 @@ -47881,7 +49082,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47889,65 +49090,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 3472 i32.store offset=4 - i64.const 0 - local.set $13 - local.get $2 + local.get $3 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|061 - local.get $1 + local.set $0 + loop $for-loop|096 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $1 - local.get $2 + local.get $64 + local.get $11 + local.get $0 + local.get $3 i32.const 3472 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $1 + local.set $64 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|061 + local.set $0 + br $for-loop|096 end end - local.get $13 + local.get $64 i64.const 6 i64.ne br_if $folding-inner5 @@ -47962,7 +49161,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -47970,65 +49169,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 3504 - i32.store offset=4 - i64.const 0 - local.set $13 - local.get $2 + i32.store offset=4 + local.get $3 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|064 - local.get $1 + local.set $0 + loop $for-loop|0101 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 4 global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $1 - local.get $2 + local.get $65 + local.get $11 + local.get $0 + local.get $3 i32.const 3504 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $1 + local.set $65 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|064 + local.set $0 + br $for-loop|0101 end end - local.get $13 + local.get $65 i64.const 6 i64.ne br_if $folding-inner5 @@ -48043,7 +49240,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48051,65 +49248,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 3536 i32.store offset=4 - f32.const 0 - local.set $14 - local.get $2 + local.get $3 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|067 - local.get $1 + local.set $0 + loop $for-loop|0106 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add f32.load local.set $5 i32.const 4 global.set $~argumentsLength - local.get $14 + local.get $66 local.get $5 - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.const 3536 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $14 - local.get $1 + local.set $66 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|067 + local.set $0 + br $for-loop|0106 end end - local.get $14 + local.get $66 f32.const 6 f32.ne br_if $folding-inner5 @@ -48124,7 +49319,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48132,65 +49327,63 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 3568 i32.store offset=4 - f64.const 0 - local.set $15 - local.get $2 + local.get $3 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - loop $for-loop|070 - local.get $1 + local.set $0 + loop $for-loop|0111 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add f64.load local.set $7 i32.const 4 global.set $~argumentsLength - local.get $15 + local.get $67 local.get $7 - local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.const 3568 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $15 - local.get $1 + local.set $67 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|070 + local.set $0 + br $for-loop|0111 end end - local.get $15 + local.get $67 f64.const 6 f64.ne br_if $folding-inner5 @@ -48198,6 +49391,8 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -48205,7 +49400,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48216,128 +49411,128 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $8 + local.tee $9 i32.store - local.get $8 + local.get $9 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $8 + local.get $9 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $8 + local.get $9 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $9 i32.load offset=8 - local.set $4 - local.get $8 + local.set $6 + local.get $9 i32.load offset=4 - local.set $3 + local.set $4 local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - loop $for-loop|012 - local.get $4 - local.get $12 + loop $for-loop|02 + local.get $6 + local.get $10 i32.gt_s if - local.get $3 - local.get $12 + local.get $4 + local.get $10 i32.add i32.load8_s local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $12 + local.get $2 + local.get $10 i32.add local.get $0 - local.get $12 - local.get $8 + local.get $10 + local.get $9 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $12 + local.get $10 i32.const 1 i32.add - local.set $12 - br $for-loop|012 + local.set $10 + br $for-loop|02 end end + local.get $3 local.get $2 - local.get $1 i32.store - local.get $1 + local.get $2 if + local.get $3 local.get $2 - local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $3 local.get $2 - local.get $1 i32.store offset=4 - local.get $2 - local.get $4 + local.get $3 + local.get $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 - local.get $2 + local.get $3 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner6 - local.get $2 + br_if $folding-inner16 + local.get $3 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne - br_if $folding-inner7 - local.get $2 + br_if $folding-inner19 + local.get $3 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 i32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -48345,7 +49540,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48356,128 +49551,128 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $8 + local.tee $9 i32.store - local.get $8 + local.get $9 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $8 + local.get $9 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $8 + local.get $9 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $9 i32.load offset=8 - local.set $4 - local.get $8 + local.set $6 + local.get $9 i32.load offset=4 - local.set $3 + local.set $4 local.get $0 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - loop $for-loop|014 - local.get $4 - local.get $12 + loop $for-loop|04 + local.get $6 + local.get $10 i32.gt_s if - local.get $3 - local.get $12 + local.get $4 + local.get $10 i32.add i32.load8_u local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $12 + local.get $2 + local.get $10 i32.add local.get $0 - local.get $12 - local.get $8 + local.get $10 + local.get $9 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $12 + local.get $10 i32.const 1 i32.add - local.set $12 - br $for-loop|014 + local.set $10 + br $for-loop|04 end end + local.get $3 local.get $2 - local.get $1 i32.store - local.get $1 + local.get $2 if + local.get $3 local.get $2 - local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $3 local.get $2 - local.get $1 i32.store offset=4 - local.get $2 - local.get $4 + local.get $3 + local.get $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 - local.get $2 + local.get $3 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner6 - local.get $2 + br_if $folding-inner16 + local.get $3 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne - br_if $folding-inner7 - local.get $2 + br_if $folding-inner19 + local.get $3 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 i32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -48485,7 +49680,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48496,128 +49691,126 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $8 + local.tee $9 i32.store - local.get $8 + local.get $9 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $8 + local.get $9 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $8 + local.get $9 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3664 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $8 + local.get $9 i32.load offset=8 - local.set $4 - local.get $8 + local.set $6 + local.get $9 i32.load offset=4 - local.set $3 + local.set $4 local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - loop $for-loop|015 - local.get $4 - local.get $12 + loop $for-loop|08 + local.get $6 + local.get $10 i32.gt_s if - local.get $3 - local.get $12 + local.get $4 + local.get $10 i32.add i32.load8_u local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $12 + local.get $2 + local.get $10 i32.add local.get $0 - local.get $12 - local.get $8 + local.get $10 + local.get $9 i32.const 3664 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $12 + local.get $10 i32.const 1 i32.add - local.set $12 - br $for-loop|015 + local.set $10 + br $for-loop|08 end end + local.get $3 local.get $2 - local.get $1 i32.store - local.get $1 + local.get $2 if + local.get $3 local.get $2 - local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end + local.get $3 local.get $2 - local.get $1 i32.store offset=4 - local.get $2 - local.get $4 + local.get $3 + local.get $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 - local.get $2 + local.get $3 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner6 - local.get $2 + br_if $folding-inner16 + local.get $3 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne - br_if $folding-inner7 - local.get $2 + br_if $folding-inner19 + local.get $3 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 i32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -48625,7 +49818,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48636,136 +49829,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $11 + local.tee $12 i32.store - local.get $11 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $11 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $11 + local.get $12 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3696 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $11 + local.get $12 i32.load offset=8 i32.const 1 i32.shr_u - local.set $8 - local.get $11 + local.set $9 + local.get $12 i32.load offset=4 - local.set $6 + local.set $8 local.get $0 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - loop $for-loop|017 - local.get $8 - local.get $12 + loop $for-loop|06 + local.get $9 + local.get $14 i32.gt_s if - local.get $6 - local.get $12 + local.get $8 + local.get $14 i32.const 1 i32.shl - local.tee $1 + local.tee $2 i32.add i32.load16_s local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $2 + local.get $3 i32.add local.get $0 + local.get $14 local.get $12 - local.get $11 i32.const 3696 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|017 + local.set $14 + br $for-loop|06 end end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store - local.get $2 + local.get $3 if - local.get $4 - local.get $2 + local.get $6 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store offset=4 + local.get $6 local.get $4 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=8 - local.get $4 + local.get $6 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner6 - local.get $4 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne - br_if $folding-inner7 - local.get $4 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 i32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -48773,7 +49966,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48784,136 +49977,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $11 + local.tee $12 i32.store - local.get $11 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $11 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $11 + local.get $12 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3728 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $11 + local.get $12 i32.load offset=8 i32.const 1 i32.shr_u - local.set $8 - local.get $11 + local.set $9 + local.get $12 i32.load offset=4 - local.set $6 + local.set $8 local.get $0 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.const 1 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - loop $for-loop|018 - local.get $8 - local.get $12 + loop $for-loop|011 + local.get $9 + local.get $14 i32.gt_s if - local.get $6 - local.get $12 + local.get $8 + local.get $14 i32.const 1 i32.shl - local.tee $1 + local.tee $2 i32.add i32.load16_u local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $2 + local.get $3 i32.add local.get $0 + local.get $14 local.get $12 - local.get $11 i32.const 3728 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|018 + local.set $14 + br $for-loop|011 end end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store - local.get $2 + local.get $3 if - local.get $4 - local.get $2 + local.get $6 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store offset=4 + local.get $6 local.get $4 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=8 - local.get $4 + local.get $6 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner6 - local.get $4 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne - br_if $folding-inner7 - local.get $4 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 i32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -48921,7 +50114,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48932,136 +50125,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $11 + local.tee $12 i32.store - local.get $11 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $11 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $11 + local.get $12 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3760 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $11 + local.get $12 i32.load offset=8 i32.const 2 i32.shr_u - local.set $8 - local.get $11 + local.set $9 + local.get $12 i32.load offset=4 - local.set $6 + local.set $8 local.get $0 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - loop $for-loop|019 - local.get $8 - local.get $12 + loop $for-loop|014 + local.get $9 + local.get $14 i32.gt_s if - local.get $6 - local.get $12 + local.get $8 + local.get $14 i32.const 2 i32.shl - local.tee $1 + local.tee $2 i32.add i32.load local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $2 + local.get $3 i32.add local.get $0 + local.get $14 local.get $12 - local.get $11 i32.const 3760 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|019 + local.set $14 + br $for-loop|014 end end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store - local.get $2 + local.get $3 if - local.get $4 - local.get $2 + local.get $6 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store offset=4 + local.get $6 local.get $4 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=8 - local.get $4 + local.get $6 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner6 - local.get $4 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne - br_if $folding-inner7 - local.get $4 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 i32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49069,7 +50262,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49080,136 +50273,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $11 + local.tee $12 i32.store - local.get $11 + local.get $12 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $11 + local.get $12 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $11 + local.get $12 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3792 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $11 + local.get $12 i32.load offset=8 i32.const 2 i32.shr_u - local.set $8 - local.get $11 + local.set $9 + local.get $12 i32.load offset=4 - local.set $6 + local.set $8 local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - loop $for-loop|020 - local.get $8 - local.get $12 + loop $for-loop|016 + local.get $9 + local.get $14 i32.gt_s if - local.get $6 - local.get $12 + local.get $8 + local.get $14 i32.const 2 i32.shl - local.tee $1 + local.tee $2 i32.add i32.load local.set $0 i32.const 3 global.set $~argumentsLength - local.get $1 local.get $2 + local.get $3 i32.add local.get $0 + local.get $14 local.get $12 - local.get $11 i32.const 3792 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|020 + local.set $14 + br $for-loop|016 end end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store - local.get $2 + local.get $3 if - local.get $4 - local.get $2 + local.get $6 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 - local.get $2 + local.get $6 + local.get $3 i32.store offset=4 + local.get $6 local.get $4 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=8 - local.get $4 + local.get $6 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner6 - local.get $4 + br_if $folding-inner16 + local.get $6 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 i32.ne - br_if $folding-inner7 - local.get $4 + br_if $folding-inner19 + local.get $6 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 i32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49217,7 +50410,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49228,136 +50421,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $9 + local.get $10 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $9 + local.get $10 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3824 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $9 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u - local.set $6 - local.get $9 + local.set $8 + local.get $10 i32.load offset=4 - local.set $4 + local.set $6 local.get $0 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.const 3 i32.shl - local.tee $2 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - loop $for-loop|022 - local.get $6 - local.get $12 + loop $for-loop|018 + local.get $8 + local.get $14 i32.gt_s if - local.get $4 - local.get $12 + local.get $6 + local.get $14 i32.const 3 i32.shl local.tee $0 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $1 + local.get $2 i32.add + local.get $11 + local.get $14 local.get $10 - local.get $12 - local.get $9 i32.const 3824 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|022 + local.set $14 + br $for-loop|018 end end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store - local.get $1 + local.get $2 if - local.get $3 - local.get $1 + local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store offset=4 + local.get $4 local.get $3 - local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=8 - local.get $3 + local.get $4 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner6 - local.get $3 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 i64.ne - br_if $folding-inner7 - local.get $3 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 i64.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49365,7 +50558,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49376,136 +50569,136 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $9 + local.get $10 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $9 + local.get $10 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3856 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $9 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u - local.set $6 - local.get $9 + local.set $8 + local.get $10 i32.load offset=4 - local.set $4 + local.set $6 local.get $0 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.const 3 i32.shl - local.tee $2 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - loop $for-loop|023 - local.get $6 - local.get $12 + loop $for-loop|020 + local.get $8 + local.get $14 i32.gt_s if - local.get $4 - local.get $12 + local.get $6 + local.get $14 i32.const 3 i32.shl local.tee $0 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $1 + local.get $2 i32.add + local.get $11 + local.get $14 local.get $10 - local.get $12 - local.get $9 i32.const 3856 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|023 + local.set $14 + br $for-loop|020 end end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store - local.get $1 + local.get $2 if - local.get $3 - local.get $1 + local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store offset=4 + local.get $4 local.get $3 - local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=8 - local.get $3 + local.get $4 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner6 - local.get $3 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 i64.ne - br_if $folding-inner7 - local.get $3 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 i64.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49513,7 +50706,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49524,66 +50717,66 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $9 + local.get $10 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $9 + local.get $10 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3888 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $9 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u - local.set $6 - local.get $9 + local.set $8 + local.get $10 i32.load offset=4 - local.set $4 + local.set $6 local.get $0 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.const 2 i32.shl - local.tee $2 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - loop $for-loop|025 - local.get $6 - local.get $12 + loop $for-loop|023 + local.get $8 + local.get $14 i32.gt_s if - local.get $4 - local.get $12 + local.get $6 + local.get $14 i32.const 2 i32.shl local.tee $0 @@ -49593,67 +50786,67 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $1 + local.get $2 i32.add local.get $5 - local.get $12 - local.get $9 + local.get $14 + local.get $10 i32.const 3888 i32.load call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|025 + local.set $14 + br $for-loop|023 end end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store - local.get $1 + local.get $2 if - local.get $3 - local.get $1 + local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store offset=4 + local.get $4 local.get $3 - local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=8 - local.get $3 + local.get $4 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner6 - local.get $3 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 f32.ne - br_if $folding-inner7 - local.get $3 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 f32.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $12 + local.set $14 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -49661,7 +50854,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49672,66 +50865,66 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $9 + local.tee $10 i32.store - local.get $9 + local.get $10 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $9 + local.get $10 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $9 + local.get $10 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3920 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store - local.get $9 + local.get $10 i32.load offset=8 i32.const 3 i32.shr_u - local.set $6 - local.get $9 + local.set $8 + local.get $10 i32.load offset=4 - local.set $4 + local.set $6 local.get $0 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.const 3 i32.shl - local.tee $2 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - loop $for-loop|026 - local.get $6 - local.get $12 + loop $for-loop|025 + local.get $8 + local.get $14 i32.gt_s if - local.get $4 - local.get $12 + local.get $6 + local.get $14 i32.const 3 i32.shl local.tee $0 @@ -49741,61 +50934,61 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $1 + local.get $2 i32.add local.get $7 - local.get $12 - local.get $9 + local.get $14 + local.get $10 i32.const 3920 i32.load call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store - local.get $12 + local.get $14 i32.const 1 i32.add - local.set $12 - br $for-loop|026 + local.set $14 + br $for-loop|025 end end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store - local.get $1 + local.get $2 if - local.get $3 - local.get $1 + local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 - local.get $1 + local.get $4 + local.get $2 i32.store offset=4 + local.get $4 local.get $3 - local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=8 - local.get $3 + local.get $4 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner6 - local.get $3 + br_if $folding-inner16 + local.get $4 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.ne - br_if $folding-inner7 - local.get $3 + br_if $folding-inner19 + local.get $4 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 f64.ne - br_if $folding-inner8 + br_if $folding-inner21 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -49812,7 +51005,7 @@ call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -49820,89 +51013,87 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4304 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4304 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 - loop $for-loop|028 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|012 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.add i32.load8_s - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 4304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|028 + local.set $0 + br $for-loop|012 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4336 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 - loop $for-loop|0329 - local.get $1 + loop $for-loop|0410 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 local.get $3 + local.get $13 i32.add i32.load8_s local.set $0 @@ -49910,29 +51101,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 4336 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0329 + local.set $13 + br $for-loop|0410 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -49940,89 +51133,87 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4368 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4368 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 - loop $for-loop|031 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|01426 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 4368 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|031 + local.set $0 + br $for-loop|01426 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4400 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4400 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 - loop $for-loop|0332 - local.get $1 + loop $for-loop|0415 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -50030,29 +51221,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 4400 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0332 + local.set $13 + br $for-loop|0415 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50060,89 +51253,87 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 4432 - i32.store offset=4 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.033 (result i32) - local.get $4 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.016 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4432 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 - loop $for-loop|034 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|01827 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 4432 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.033 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.016 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|034 + local.set $0 + br $for-loop|01827 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store offset=4 - i32.const 0 - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0135 (result i32) - local.get $4 + br_if $folding-inner23 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0119 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 - loop $for-loop|0336 - local.get $1 + loop $for-loop|0420 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -50150,29 +51341,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 4464 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0135 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0119 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0336 + local.set $13 + br $for-loop|0420 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50180,94 +51373,92 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4496 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 - loop $for-loop|037 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|021 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_s - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 4496 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|037 + local.set $0 + br $for-loop|021 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 - loop $for-loop|0338 - local.get $1 + loop $for-loop|0422 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 1 i32.shl local.get $3 @@ -50278,29 +51469,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 4528 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0338 + local.set $13 + br $for-loop|0422 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50308,94 +51501,92 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4560 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 - loop $for-loop|040 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|02328 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_u - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 4560 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|040 + local.set $0 + br $for-loop|02328 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4592 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 - loop $for-loop|0341 - local.get $1 + loop $for-loop|0424 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 1 i32.shl local.get $3 @@ -50406,29 +51597,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 4592 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0341 + local.set $13 + br $for-loop|0424 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50436,94 +51629,92 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4624 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4624 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - loop $for-loop|043 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|02529 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 4624 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|043 + local.set $0 + br $for-loop|02529 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|0344 - local.get $1 + loop $for-loop|0426 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 2 i32.shl local.get $3 @@ -50534,29 +51725,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 4656 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0344 + local.set $13 + br $for-loop|0426 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50564,94 +51757,92 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4688 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4688 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - loop $for-loop|045 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|028 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 1 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 4688 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|045 + local.set $0 + br $for-loop|028 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4720 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4720 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|0346 - local.get $1 + loop $for-loop|0429 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 2 i32.shl local.get $3 @@ -50662,29 +51853,31 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 4720 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0346 + local.set $13 + br $for-loop|0429 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50692,127 +51885,127 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4752 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4752 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|047 + local.set $2 + loop $for-loop|030 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $0 + local.get $4 i32.const 4752 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|047 + local.set $0 + br $for-loop|030 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4784 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4784 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0348 + loop $for-loop|0431 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 3 i32.shl local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $13 + local.get $4 i32.const 4784 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0348 + local.set $13 + br $for-loop|0431 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50820,127 +52013,127 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $4 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $4 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4816 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4816 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|050 + local.set $2 + loop $for-loop|033 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $0 + local.get $4 i32.const 4816 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|050 + local.set $0 + br $for-loop|033 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4848 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0351 + loop $for-loop|0434 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 3 i32.shl local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $13 + local.get $4 i32.const 4848 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0351 + local.set $13 + br $for-loop|0434 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -50948,49 +52141,49 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $4 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $4 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|053 + local.set $2 + loop $for-loop|035 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add f32.load local.set $5 @@ -50998,44 +52191,42 @@ global.set $~argumentsLength i32.const 1 local.get $5 - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 4880 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|053 + local.set $0 + br $for-loop|035 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4912 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4912 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0354 + loop $for-loop|0436 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 2 i32.shl local.get $2 @@ -51046,29 +52237,31 @@ global.set $~argumentsLength i32.const 1 local.get $5 - local.get $1 - local.get $3 + local.get $13 + local.get $4 i32.const 4912 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0354 + local.set $13 + br $for-loop|0436 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51076,49 +52269,49 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $4 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $4 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|056 + local.set $2 + loop $for-loop|038 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add f64.load local.set $7 @@ -51126,44 +52319,42 @@ global.set $~argumentsLength i32.const 1 local.get $7 - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 4944 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|056 + local.set $0 + br $for-loop|038 end end i32.const 0 end i32.eqz - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner23 block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0357 + loop $for-loop|0439 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 3 i32.shl local.get $2 @@ -51174,29 +52365,31 @@ global.set $~argumentsLength i32.const 1 local.get $7 - local.get $1 - local.get $3 + local.get $13 + local.get $4 i32.const 4976 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|0357 + local.set $13 + br $for-loop|0439 end end i32.const 0 end - br_if $folding-inner10 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51204,51 +52397,51 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 5008 i32.store offset=4 - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 + local.set $3 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|059 + loop $for-loop|040 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 - local.get $3 + local.get $4 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $6 i32.const 5008 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -51257,7 +52450,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|059 + br $for-loop|040 end end i32.const -1 @@ -51266,56 +52459,56 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5040 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 - loop $for-loop|0360 - local.get $0 + loop $for-loop|0441 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 local.get $3 + local.get $13 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $13 + local.get $6 i32.const 5040 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0360 + local.set $13 + br $for-loop|0441 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51323,51 +52516,51 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 5072 i32.store offset=4 - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 + local.set $3 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|062 + loop $for-loop|043 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 - local.get $3 + local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $6 i32.const 5072 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -51376,7 +52569,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|062 + br $for-loop|043 end end i32.const -1 @@ -51385,56 +52578,56 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5104 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 - loop $for-loop|0363 - local.get $0 + loop $for-loop|0444 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 local.get $3 + local.get $13 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $13 + local.get $6 i32.const 5104 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0363 + local.set $13 + br $for-loop|0444 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51442,60 +52635,60 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer i32.const 5136 i32.store offset=4 - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.064 - loop $for-loop|065 + local.set $3 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.045 + loop $for-loop|046 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 - local.get $3 + local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $6 i32.const 5136 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.064 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.045 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|065 + br $for-loop|046 end end i32.const -1 @@ -51504,56 +52697,56 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5168 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0166 - loop $for-loop|0367 - local.get $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0147 + loop $for-loop|0448 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 local.get $3 + local.get $13 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $13 + local.get $6 i32.const 5168 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0166 - local.get $0 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0147 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0367 + local.set $13 + br $for-loop|0448 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51561,55 +52754,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 5200 i32.store offset=4 - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|068 + loop $for-loop|049 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_s i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $6 i32.const 5200 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -51618,7 +52811,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|068 + br $for-loop|049 end end i32.const -1 @@ -51627,27 +52820,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5232 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 - loop $for-loop|0369 - local.get $0 + loop $for-loop|0450 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 1 i32.shl local.get $3 @@ -51655,32 +52846,34 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $13 + local.get $6 i32.const 5232 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0369 + local.set $13 + br $for-loop|0450 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51688,55 +52881,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer i32.const 5264 i32.store offset=4 - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|071 + loop $for-loop|051 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $6 i32.const 5264 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -51745,7 +52938,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|071 + br $for-loop|051 end end i32.const -1 @@ -51754,27 +52947,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5296 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 - loop $for-loop|0372 - local.get $0 + loop $for-loop|0452 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 1 i32.shl local.get $3 @@ -51782,32 +52973,34 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $13 + local.get $6 i32.const 5296 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0372 + local.set $13 + br $for-loop|0452 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51815,55 +53008,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer i32.const 5328 i32.store offset=4 - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|073 + loop $for-loop|053 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $6 i32.const 5328 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -51872,7 +53065,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|073 + br $for-loop|053 end end i32.const -1 @@ -51881,27 +53074,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5360 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 - loop $for-loop|0374 - local.get $0 + loop $for-loop|0454 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 2 i32.shl local.get $3 @@ -51909,32 +53100,34 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $13 + local.get $6 i32.const 5360 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0374 + local.set $13 + br $for-loop|0454 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -51942,55 +53135,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer i32.const 5392 i32.store offset=4 - local.get $4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 + local.set $3 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|075 + loop $for-loop|055 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $6 i32.const 5392 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -51999,7 +53192,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|075 + br $for-loop|055 end end i32.const -1 @@ -52008,27 +53201,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5424 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 - loop $for-loop|0376 - local.get $0 + loop $for-loop|0456 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 2 i32.shl local.get $3 @@ -52036,32 +53227,34 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $13 + local.get $6 i32.const 5424 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0376 + local.set $13 + br $for-loop|0456 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52069,55 +53262,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 5456 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|077 + loop $for-loop|057 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5456 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) @@ -52126,7 +53319,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|077 + br $for-loop|057 end end i32.const -1 @@ -52135,27 +53328,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5488 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 - loop $for-loop|0378 + loop $for-loop|0458 local.get $0 - local.get $1 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 3 i32.shl local.get $2 @@ -52163,32 +53354,34 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $3 + local.get $13 + local.get $4 i32.const 5488 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0378 + local.set $13 + br $for-loop|0458 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52196,55 +53389,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $4 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $4 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 5520 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|079 + loop $for-loop|060 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5520 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) @@ -52253,7 +53446,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|079 + br $for-loop|060 end end i32.const -1 @@ -52262,27 +53455,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5552 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 - loop $for-loop|0380 + loop $for-loop|0461 local.get $0 - local.get $1 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 3 i32.shl local.get $2 @@ -52290,32 +53481,34 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $3 + local.get $13 + local.get $4 i32.const 5552 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0380 + local.set $13 + br $for-loop|0461 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52323,55 +53516,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $4 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $4 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 5584 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|081 + loop $for-loop|062 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add f32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5584 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) @@ -52380,7 +53573,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|081 + br $for-loop|062 end end i32.const -1 @@ -52389,27 +53582,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 - loop $for-loop|0382 + loop $for-loop|0463 local.get $0 - local.get $1 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 2 i32.shl local.get $2 @@ -52417,32 +53608,34 @@ f32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $3 + local.get $13 + local.get $4 i32.const 5616 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0382 + local.set $13 + br $for-loop|0463 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52450,55 +53643,55 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $4 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $4 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 5648 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|083 + loop $for-loop|065 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add f64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5648 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) @@ -52507,7 +53700,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|083 + br $for-loop|065 end end i32.const -1 @@ -52516,27 +53709,25 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner11 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 5680 i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 - loop $for-loop|0384 + loop $for-loop|0466 local.get $0 - local.get $1 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $0 + local.get $13 i32.const 3 i32.shl local.get $2 @@ -52544,26 +53735,26 @@ f64.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $3 + local.get $13 + local.get $4 i32.const 5680 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 - local.get $0 + local.get $13 i32.const 1 i32.add - local.set $0 - br $for-loop|0384 + local.set $13 + br $for-loop|0466 end end i32.const -1 - local.set $0 + local.set $13 end - local.get $0 + local.get $13 i32.const -1 i32.ne - br_if $folding-inner12 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -52575,7 +53766,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52583,45 +53774,45 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 5712 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|085 + loop $for-loop|067 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.get $2 + local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5712 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -52630,7 +53821,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|085 + br $for-loop|067 end end i32.const -1 @@ -52639,32 +53830,32 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 5744 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 - loop $for-loop|0386 + loop $for-loop|0468 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.get $2 + local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5744 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -52673,7 +53864,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0386 + br $for-loop|0468 end end i32.const -1 @@ -52682,7 +53873,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -52694,7 +53885,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52702,45 +53893,45 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 5776 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|087 + loop $for-loop|069 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.get $2 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5776 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -52749,7 +53940,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|087 + br $for-loop|069 end end i32.const -1 @@ -52758,32 +53949,32 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 5808 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 - loop $for-loop|0388 + loop $for-loop|0470 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.get $2 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5808 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -52792,7 +53983,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0388 + br $for-loop|0470 end end i32.const -1 @@ -52801,7 +53992,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -52813,7 +54004,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52821,54 +54012,54 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer i32.const 5840 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub local.set $0 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.089 - loop $for-loop|090 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.071 + loop $for-loop|072 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.get $2 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5840 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.089 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.071 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|090 + br $for-loop|072 end end i32.const -1 @@ -52877,41 +54068,41 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 5872 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub local.set $0 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0191 - loop $for-loop|0392 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0173 + loop $for-loop|0474 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.get $2 + local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5872 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0191 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0173 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|0392 + br $for-loop|0474 end end i32.const -1 @@ -52920,7 +54111,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -52932,7 +54123,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52940,27 +54131,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 5904 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -52968,7 +54159,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|093 + loop $for-loop|075 local.get $0 i32.const 0 i32.ge_s @@ -52976,13 +54167,13 @@ local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5904 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -52991,7 +54182,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|093 + br $for-loop|075 end end i32.const -1 @@ -53000,14 +54191,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 5936 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -53015,7 +54206,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 - loop $for-loop|0394 + loop $for-loop|0476 local.get $0 i32.const 0 i32.ge_s @@ -53023,13 +54214,13 @@ local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5936 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -53038,7 +54229,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0394 + br $for-loop|0476 end end i32.const -1 @@ -53047,7 +54238,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -53059,7 +54250,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53067,27 +54258,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer i32.const 5968 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -53095,7 +54286,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|095 + loop $for-loop|077 local.get $0 i32.const 0 i32.ge_s @@ -53103,13 +54294,13 @@ local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 5968 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -53118,7 +54309,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|095 + br $for-loop|077 end end i32.const -1 @@ -53127,14 +54318,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 6000 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u @@ -53142,7 +54333,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 - loop $for-loop|0396 + loop $for-loop|0478 local.get $0 i32.const 0 i32.ge_s @@ -53150,13 +54341,13 @@ local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 6000 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -53165,7 +54356,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0396 + br $for-loop|0478 end end i32.const -1 @@ -53174,7 +54365,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -53186,7 +54377,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53194,27 +54385,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer i32.const 6032 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -53222,7 +54413,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|097 + loop $for-loop|079 local.get $0 i32.const 0 i32.ge_s @@ -53230,13 +54421,13 @@ local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 6032 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -53245,7 +54436,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|097 + br $for-loop|079 end end i32.const -1 @@ -53254,14 +54445,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 6064 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -53269,7 +54460,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 - loop $for-loop|0398 + loop $for-loop|0480 local.get $0 i32.const 0 i32.ge_s @@ -53277,13 +54468,13 @@ local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 6064 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -53292,7 +54483,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0398 + br $for-loop|0480 end end i32.const -1 @@ -53301,7 +54492,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -53313,7 +54504,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53321,27 +54512,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer i32.const 6096 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -53349,7 +54540,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|099 + loop $for-loop|082 local.get $0 i32.const 0 i32.ge_s @@ -53357,13 +54548,13 @@ local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 6096 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -53372,7 +54563,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|099 + br $for-loop|082 end end i32.const -1 @@ -53381,14 +54572,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 6128 i32.store offset=4 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -53396,7 +54587,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 - loop $for-loop|03100 + loop $for-loop|0483 local.get $0 i32.const 0 i32.ge_s @@ -53404,13 +54595,13 @@ local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $3 + local.get $4 i32.const 6128 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -53419,7 +54610,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|03100 + br $for-loop|0483 end end i32.const -1 @@ -53428,7 +54619,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -53440,7 +54631,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53448,27 +54639,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 6160 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -53476,7 +54667,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0101 + loop $for-loop|084 local.get $0 i32.const 0 i32.ge_s @@ -53484,13 +54675,13 @@ local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6160 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) @@ -53499,7 +54690,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0101 + br $for-loop|084 end end i32.const -1 @@ -53508,14 +54699,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 6192 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -53523,7 +54714,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 - loop $for-loop|03102 + loop $for-loop|0485 local.get $0 i32.const 0 i32.ge_s @@ -53531,13 +54722,13 @@ local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6192 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) @@ -53546,7 +54737,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|03102 + br $for-loop|0485 end end i32.const -1 @@ -53555,7 +54746,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -53567,7 +54758,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53575,27 +54766,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 6224 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -53603,7 +54794,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0103 + loop $for-loop|087 local.get $0 i32.const 0 i32.ge_s @@ -53611,13 +54802,13 @@ local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6224 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) @@ -53626,7 +54817,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0103 + br $for-loop|087 end end i32.const -1 @@ -53635,14 +54826,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 6256 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -53650,7 +54841,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 - loop $for-loop|03104 + loop $for-loop|0488 local.get $0 i32.const 0 i32.ge_s @@ -53658,13 +54849,13 @@ local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6256 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) @@ -53673,7 +54864,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|03104 + br $for-loop|0488 end end i32.const -1 @@ -53682,7 +54873,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -53694,7 +54885,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53702,27 +54893,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 6288 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -53730,7 +54921,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0105 + loop $for-loop|089 local.get $0 i32.const 0 i32.ge_s @@ -53738,13 +54929,13 @@ local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6288 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) @@ -53753,7 +54944,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0105 + br $for-loop|089 end end i32.const -1 @@ -53762,14 +54953,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 6320 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -53777,7 +54968,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 - loop $for-loop|03106 + loop $for-loop|0490 local.get $0 i32.const 0 i32.ge_s @@ -53785,13 +54976,13 @@ local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6320 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) @@ -53800,7 +54991,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|03106 + br $for-loop|0490 end end i32.const -1 @@ -53809,7 +55000,7 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -53821,7 +55012,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53829,27 +55020,27 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 6352 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -53857,7 +55048,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0107 + loop $for-loop|092 local.get $0 i32.const 0 i32.ge_s @@ -53865,13 +55056,13 @@ local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6352 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) @@ -53880,7 +55071,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|0107 + br $for-loop|092 end end i32.const -1 @@ -53889,14 +55080,14 @@ local.get $0 i32.const 1 i32.ne - br_if $folding-inner13 + br_if $folding-inner27 global.get $~lib/memory/__stack_pointer i32.const 6384 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -53904,7 +55095,7 @@ i32.sub local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 - loop $for-loop|03108 + loop $for-loop|0493 local.get $0 i32.const 0 i32.ge_s @@ -53912,13 +55103,13 @@ local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load i32.const 3 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $3 i32.const 6384 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) @@ -53927,7 +55118,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|03108 + br $for-loop|0493 end end i32.const -1 @@ -53936,13 +55127,15 @@ local.get $0 i32.const -1 i32.ne - br_if $folding-inner14 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53950,90 +55143,88 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6416 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6416 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 - loop $for-loop|0109 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|094 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.add i32.load8_s - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 6416 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0109 + local.set $0 + br $for-loop|094 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 - loop $for-loop|03110 - local.get $1 + loop $for-loop|0495 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 local.get $3 + local.get $13 i32.add i32.load8_s local.set $0 @@ -54041,30 +55232,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03110 + local.set $13 + br $for-loop|0495 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54072,90 +55265,88 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6480 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6480 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 - loop $for-loop|0111 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|097 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 6480 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0111 + local.set $0 + br $for-loop|097 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6512 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6512 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 - loop $for-loop|03112 - local.get $1 + loop $for-loop|0498 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -54163,30 +55354,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03112 + local.set $13 + br $for-loop|0498 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54194,90 +55387,88 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 6544 - i32.store offset=4 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0113 (result i32) - local.get $4 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.099 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6544 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 - local.set $2 - loop $for-loop|0114 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|0100 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0113 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.099 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0114 + local.set $0 + br $for-loop|0100 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6576 - i32.store offset=4 - i32.const 0 - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01115 (result i32) - local.get $4 + br_if $folding-inner29 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01101 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 6576 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 local.set $2 - loop $for-loop|03116 - local.get $1 + loop $for-loop|04102 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 local.get $3 + local.get $13 i32.add i32.load8_u local.set $0 @@ -54285,30 +55476,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01115 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01101 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03116 + local.set $13 + br $for-loop|04102 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54316,95 +55509,93 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6608 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6608 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 - loop $for-loop|0117 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|0103 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_s - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 6608 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0117 + local.set $0 + br $for-loop|0103 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6640 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6640 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 - loop $for-loop|03118 - local.get $1 + loop $for-loop|04104 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 1 i32.shl local.get $3 @@ -54415,30 +55606,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03118 + local.set $13 + br $for-loop|04104 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54446,95 +55639,93 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6672 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6672 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 - loop $for-loop|0119 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|0105 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_u - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 6672 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0119 + local.set $0 + br $for-loop|0105 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6704 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6704 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $2 - loop $for-loop|03120 - local.get $1 + loop $for-loop|04106 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 1 i32.shl local.get $3 @@ -54545,30 +55736,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03120 + local.set $13 + br $for-loop|04106 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54576,95 +55769,93 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6736 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6736 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - loop $for-loop|0121 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|0107 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 6736 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0121 + local.set $0 + br $for-loop|0107 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6768 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6768 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|03122 - local.get $1 + loop $for-loop|04108 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 2 i32.shl local.get $3 @@ -54675,30 +55866,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03122 + local.set $13 + br $for-loop|04108 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54706,95 +55899,93 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $6 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $4 + local.get $6 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6800 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6800 + i32.store offset=4 + local.get $6 i32.load offset=4 - local.set $3 - local.get $4 + local.set $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - loop $for-loop|0123 - local.get $1 - local.get $2 + local.set $3 + loop $for-loop|0109 + local.get $0 + local.get $3 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load - local.set $0 + local.set $2 i32.const 3 global.set $~argumentsLength i32.const 0 + local.get $2 local.get $0 - local.get $1 - local.get $4 + local.get $6 i32.const 6800 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0123 + local.set $0 + br $for-loop|0109 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6832 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 6832 + i32.store offset=4 + local.get $6 i32.load offset=4 local.set $3 - local.get $4 + local.get $6 i32.load offset=8 i32.const 2 i32.shr_u local.set $2 - loop $for-loop|03124 - local.get $1 + loop $for-loop|04110 local.get $2 - i32.lt_s + local.get $13 + i32.gt_s if - local.get $1 + local.get $13 i32.const 2 i32.shl local.get $3 @@ -54805,30 +55996,32 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $1 - local.get $4 + local.get $13 + local.get $6 i32.const 6832 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03124 + local.set $13 + br $for-loop|04110 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54836,129 +56029,129 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $3 + local.get $4 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6864 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 6864 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|0125 + local.set $2 + loop $for-loop|0112 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $0 + local.get $4 i32.const 6864 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0125 + local.set $0 + br $for-loop|0112 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6896 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 6896 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|03126 + loop $for-loop|04113 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 3 i32.shl local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $13 + local.get $4 i32.const 6896 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03126 + local.set $13 + br $for-loop|04113 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54966,129 +56159,129 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $4 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $3 + local.get $4 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6928 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 6928 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|0127 + local.set $2 + loop $for-loop|0114 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $0 + local.get $4 i32.const 6928 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0127 + local.set $0 + br $for-loop|0114 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 6960 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 6960 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|03128 + loop $for-loop|04115 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 3 i32.shl local.get $2 i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $10 - local.get $1 - local.get $3 + local.get $11 + local.get $13 + local.get $4 i32.const 6960 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03128 + local.set $13 + br $for-loop|04115 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -55096,49 +56289,49 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $4 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $3 + local.get $4 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6992 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 6992 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|0129 + local.set $2 + loop $for-loop|0116 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add f32.load local.set $5 @@ -55146,45 +56339,43 @@ global.set $~argumentsLength i32.const 0 local.get $5 - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 6992 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0129 + local.set $0 + br $for-loop|0116 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 7024 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|03130 + loop $for-loop|04117 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 2 i32.shl local.get $2 @@ -55195,30 +56386,32 @@ global.set $~argumentsLength i32.const 0 local.get $5 - local.get $1 - local.get $3 + local.get $13 + local.get $4 i32.const 7024 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03130 + local.set $13 + br $for-loop|04117 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 + i32.const 0 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -55226,49 +56419,49 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $4 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $3 + local.get $4 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7056 - i32.store offset=4 block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 7056 + i32.store offset=4 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|0131 + local.set $2 + loop $for-loop|0118 local.get $0 - local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $2 + local.get $3 i32.add f64.load local.set $7 @@ -55276,45 +56469,43 @@ global.set $~argumentsLength i32.const 0 local.get $7 - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 7056 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0131 + local.set $0 + br $for-loop|0118 end end i32.const 1 end i32.eqz - br_if $folding-inner15 - global.get $~lib/memory/__stack_pointer - i32.const 7088 - i32.store offset=4 - i32.const 0 - local.set $1 + br_if $folding-inner29 block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 7088 + i32.store offset=4 + local.get $4 i32.load offset=4 local.set $2 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|03132 + loop $for-loop|04119 local.get $0 - local.get $1 + local.get $13 i32.gt_s if - local.get $1 + local.get $13 i32.const 3 i32.shl local.get $2 @@ -55325,24 +56516,24 @@ global.set $~argumentsLength i32.const 0 local.get $7 - local.get $1 - local.get $3 + local.get $13 + local.get $4 i32.const 7088 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|03132 + local.set $13 + br $for-loop|04119 end end i32.const 1 end - br_if $folding-inner16 + br_if $folding-inner30 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55354,7 +56545,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55367,14 +56558,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -55384,7 +56575,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -55394,7 +56585,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -55404,41 +56595,39 @@ global.get $~lib/memory/__stack_pointer i32.const 7200 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|073133 - local.get $1 - local.get $9 + local.set $2 + loop $for-loop|0116120 + local.get $2 + local.get $37 i32.gt_s if - local.get $2 - local.get $9 + local.get $3 + local.get $37 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $3 + local.get $37 + local.get $4 i32.const 7200 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $9 + local.get $37 i32.const 1 i32.add - local.set $9 - br $for-loop|073133 + local.set $37 + br $for-loop|0116120 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -55450,7 +56639,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55463,14 +56652,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -55481,7 +56670,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -55492,7 +56681,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -55503,41 +56692,39 @@ global.get $~lib/memory/__stack_pointer i32.const 7232 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|076 - local.get $1 - local.get $9 + local.set $2 + loop $for-loop|0121 + local.get $2 + local.get $38 i32.gt_s if - local.get $2 - local.get $9 + local.get $3 + local.get $38 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $3 + local.get $38 + local.get $4 i32.const 7232 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $9 + local.get $38 i32.const 1 i32.add - local.set $9 - br $for-loop|076 + local.set $38 + br $for-loop|0121 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -55549,7 +56736,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55562,14 +56749,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -55580,7 +56767,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -55591,7 +56778,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -55602,41 +56789,39 @@ global.get $~lib/memory/__stack_pointer i32.const 7264 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|080 - local.get $1 - local.get $9 + local.set $2 + loop $for-loop|0128 + local.get $2 + local.get $39 i32.gt_s if - local.get $2 - local.get $9 + local.get $3 + local.get $39 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $3 + local.get $39 + local.get $4 i32.const 7264 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $9 + local.get $39 i32.const 1 i32.add - local.set $9 - br $for-loop|080 + local.set $39 + br $for-loop|0128 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -55648,7 +56833,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55661,14 +56846,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -55678,7 +56863,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -55688,7 +56873,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -55698,45 +56883,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7296 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|083134 - local.get $1 - local.get $9 + local.set $2 + loop $for-loop|0133 + local.get $2 + local.get $40 i32.gt_s if - local.get $9 + local.get $40 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $3 + local.get $40 + local.get $4 i32.const 7296 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $9 + local.get $40 i32.const 1 i32.add - local.set $9 - br $for-loop|083134 + local.set $40 + br $for-loop|0133 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -55748,7 +56931,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55761,14 +56944,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -55779,7 +56962,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -55790,7 +56973,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -55801,45 +56984,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7328 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|086 - local.get $1 - local.get $9 + local.set $2 + loop $for-loop|0138 + local.get $2 + local.get $41 i32.gt_s if - local.get $9 + local.get $41 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $3 + local.get $41 + local.get $4 i32.const 7328 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $9 + local.get $41 i32.const 1 i32.add - local.set $9 - br $for-loop|086 + local.set $41 + br $for-loop|0138 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -55851,7 +57032,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55864,14 +57045,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -55880,7 +57061,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -55889,7 +57070,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -55898,45 +57079,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7360 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|089 - local.get $1 - local.get $9 + local.set $2 + loop $for-loop|0143 + local.get $2 + local.get $42 i32.gt_s if - local.get $9 + local.get $42 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $3 + local.get $42 + local.get $4 i32.const 7360 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $9 + local.get $42 i32.const 1 i32.add - local.set $9 - br $for-loop|089 + local.set $42 + br $for-loop|0143 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -55948,7 +57127,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55961,14 +57140,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.const 7152 i32.const 0 @@ -55977,7 +57156,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 1 i32.const 7152 i32.const 1 @@ -55986,7 +57165,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $4 i32.const 2 i32.const 7152 i32.const 2 @@ -55995,45 +57174,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7392 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|092 - local.get $1 - local.get $9 + local.set $2 + loop $for-loop|0148 + local.get $2 + local.get $43 i32.gt_s if - local.get $9 + local.get $43 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $3 + local.get $43 + local.get $4 i32.const 7392 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $9 + local.get $43 i32.const 1 i32.add - local.set $9 - br $for-loop|092 + local.set $43 + br $for-loop|0148 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -56045,7 +57222,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56058,14 +57235,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 7152 i32.const 0 @@ -56075,7 +57252,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 1 i32.const 7152 i32.const 1 @@ -56085,7 +57262,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 7152 i32.const 2 @@ -56095,45 +57272,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7424 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|095135 + loop $for-loop|0153 local.get $0 - local.get $9 + local.get $44 i32.gt_s if - local.get $9 + local.get $44 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $2 + local.get $44 + local.get $3 i32.const 7424 i32.load call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $9 + local.get $44 i32.const 1 i32.add - local.set $9 - br $for-loop|095135 + local.set $44 + br $for-loop|0153 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -56145,7 +57320,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56158,14 +57333,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 7152 i32.const 0 @@ -56175,7 +57350,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 1 i32.const 7152 i32.const 1 @@ -56185,7 +57360,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 7152 i32.const 2 @@ -56195,45 +57370,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7456 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|098 + loop $for-loop|0158 local.get $0 - local.get $9 + local.get $45 i32.gt_s if - local.get $9 + local.get $45 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $2 + local.get $45 + local.get $3 i32.const 7456 i32.load call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $9 + local.get $45 i32.const 1 i32.add - local.set $9 - br $for-loop|098 + local.set $45 + br $for-loop|0158 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -56245,7 +57418,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56258,14 +57431,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 7152 i32.const 0 @@ -56275,7 +57448,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 1 i32.const 7152 i32.const 1 @@ -56285,7 +57458,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 7152 i32.const 2 @@ -56295,45 +57468,43 @@ global.get $~lib/memory/__stack_pointer i32.const 7488 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0101136 + loop $for-loop|0163 local.get $0 - local.get $9 + local.get $46 i32.gt_s if - local.get $9 + local.get $46 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $2 + local.get $46 + local.get $3 i32.const 7488 i32.load call_indirect $0 (type $f32_i32_i32_=>_none) - local.get $9 + local.get $46 i32.const 1 i32.add - local.set $9 - br $for-loop|0101136 + local.set $46 + br $for-loop|0163 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner17 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -56345,7 +57516,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56358,14 +57529,14 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 7152 i32.const 0 @@ -56375,7 +57546,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 1 i32.const 7152 i32.const 1 @@ -56385,7 +57556,7 @@ global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 7152 i32.const 2 @@ -56395,582 +57566,49 @@ global.get $~lib/memory/__stack_pointer i32.const 7520 i32.store offset=8 - i32.const 0 - local.set $9 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - loop $for-loop|0104 - local.get $0 - local.get $9 - i32.gt_s - if - local.get $9 - i32.const 3 - i32.shl - local.get $1 - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $9 - local.get $2 - i32.const 7520 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_none) - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0104 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner17 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 7616 - i32.store - local.get $0 - i32.const 7628 - i32.load - local.tee $3 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store offset=8 - loop $for-loop|0106 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0106 - end - end - local.get $2 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - call $~lib/typedarray/Int8Array#__get - i32.const 7616 - local.get $3 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__get - i32.extend8_s - i32.ne - br_if $folding-inner18 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 - i32.ne - br_if $folding-inner19 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.ne - br_if $folding-inner20 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.ne - br_if $folding-inner21 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - br_if $folding-inner22 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 7616 - i32.store - local.get $0 - i32.const 7628 - i32.load - local.tee $3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store offset=8 - loop $for-loop|020137 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|020137 - end - end - local.get $2 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $1 - loop $for-loop|121 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7616 - local.get $3 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - br_if $folding-inner18 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|121 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - br_if $folding-inner19 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne - br_if $folding-inner20 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne - br_if $folding-inner21 - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - br_if $folding-inner22 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 7616 - i32.store - local.get $0 - i32.const 7628 - i32.load - local.tee $3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store offset=8 - loop $for-loop|024108 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|024108 - end - end - local.get $2 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $1 - loop $for-loop|125 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7616 - local.get $3 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - br_if $folding-inner18 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|125 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.ne - br_if $folding-inner19 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - br_if $folding-inner20 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - br_if $folding-inner21 - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - br_if $folding-inner22 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 7616 - i32.store - local.get $0 - i32.const 7628 - i32.load - local.tee $3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.load offset=4 + local.set $2 local.get $3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store offset=8 - loop $for-loop|028138 - local.get $1 - local.get $3 - i32.lt_s + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0168 + local.get $0 + local.get $47 + i32.gt_s if + local.get $47 + i32.const 3 + i32.shl local.get $2 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 i32.add - local.set $1 - br $for-loop|028138 - end - end - local.get $2 - call $~lib/typedarray/Int16Array#reverse - drop - i32.const 0 - local.set $1 - loop $for-loop|129 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $1 - call $~lib/typedarray/Int16Array#__get - i32.const 7616 + f64.load + i32.const 3 + global.set $~argumentsLength + local.get $47 local.get $3 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__get - i32.extend16_s - i32.ne - br_if $folding-inner18 - local.get $1 + i32.const 7520 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_none) + local.get $47 i32.const 1 i32.add - local.set $1 - br $for-loop|129 + local.set $47 + br $for-loop|0168 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne - br_if $folding-inner19 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne - br_if $folding-inner20 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - br_if $folding-inner21 - local.get $0 + global.get $std/typedarray/forEachCallCount i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 i32.ne - br_if $folding-inner22 + br_if $folding-inner6 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -56978,133 +57616,136 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i64.const 0 i64.store offset=8 - local.get $0 + local.get $2 i32.const 0 i32.store offset=16 - local.get $0 + local.get $2 i32.const 7616 i32.store - local.get $0 + local.get $2 i32.const 7628 i32.load - local.tee $3 - call $~lib/typedarray/Uint16Array#constructor + local.tee $4 + call $~lib/typedarray/Int8Array#constructor local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 i32.store offset=8 - loop $for-loop|032 - local.get $1 - local.get $3 + loop $for-loop|0122 + local.get $0 + local.get $4 i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $3 local.get $0 - local.get $1 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|032 + local.set $0 + br $for-loop|0122 end end local.get $2 - call $~lib/typedarray/Int16Array#reverse - drop + i32.load offset=4 + local.get $2 + i32.load offset=8 + call $~lib/util/bytes/REVERSE i32.const 0 - local.set $1 - loop $for-loop|133 - local.get $1 - local.get $3 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 i32.lt_s if local.get $2 - local.get $1 - call $~lib/typedarray/Uint16Array#__get + local.get $0 + call $~lib/typedarray/Int8Array#__get i32.const 7616 - local.get $3 + local.get $4 i32.const 1 i32.sub - local.get $1 + local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 65535 - i32.and + i32.extend8_s i32.ne - br_if $folding-inner18 - local.get $1 + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|133 + local.set $0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 + i32.const 4 i32.const 8 - call $~lib/typedarray/Uint16Array#subarray + call $~lib/typedarray/Int8Array#subarray local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 local.get $0 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + call $~lib/util/bytes/REVERSE + local.get $0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 8 i32.ne - br_if $folding-inner19 + br_if $folding-inner32 local.get $0 i32.const 1 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 7 i32.ne - br_if $folding-inner20 + br_if $folding-inner33 local.get $0 i32.const 2 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 6 i32.ne - br_if $folding-inner21 + br_if $folding-inner34 local.get $0 i32.const 3 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int8Array#__get i32.const 5 i32.ne - br_if $folding-inner22 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -57112,235 +57753,138 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i64.const 0 i64.store offset=8 - local.get $0 + local.get $2 i32.const 0 i32.store offset=16 - local.get $0 + local.get $2 i32.const 7616 i32.store - local.get $0 + local.get $2 i32.const 7628 i32.load - local.tee $11 - call $~lib/typedarray/Int32Array#constructor - local.tee $8 + local.tee $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $11 - call $~lib/typedarray/Int32Array#constructor - local.tee $9 + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 i32.store offset=8 - loop $for-loop|036 - local.get $1 - local.get $11 + loop $for-loop|0123 + local.get $0 + local.get $4 i32.lt_s if - local.get $8 - local.get $1 + local.get $2 + local.get $0 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $9 - local.get $1 + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $3 + local.get $0 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|036 + local.set $0 + br $for-loop|0123 end end - i32.const 0 - local.set $1 - local.get $8 + local.get $2 i32.load offset=4 - local.set $6 - local.get $8 + local.get $2 i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $4 - local.get $0 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|0 - local.get $1 - local.get $4 - i32.lt_u - if - local.get $1 - i32.const 2 - i32.shl - local.get $6 - i32.add - local.tee $0 - i32.load - local.set $2 - local.get $0 - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - local.get $6 - i32.add - local.tee $0 - i32.load - i32.store - local.get $0 - local.get $2 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end - end + call $~lib/util/bytes/REVERSE i32.const 0 - local.set $1 - loop $for-loop|137 - local.get $1 - local.get $11 + local.set $0 + loop $for-loop|1124 + local.get $0 + local.get $4 i32.lt_s if - local.get $8 - local.get $1 - call $~lib/typedarray/Int32Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Uint8Array#__get i32.const 7616 - local.get $11 + local.get $4 i32.const 1 i32.sub - local.get $1 + local.get $0 i32.sub call $~lib/array/Array#__get + i32.const 255 + i32.and i32.ne - br_if $folding-inner18 - local.get $1 + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|137 + local.set $0 + br $for-loop|1124 end end global.get $~lib/memory/__stack_pointer - local.get $9 - i32.const 4 + local.get $3 i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.set $6 + call $~lib/typedarray/Uint8Array#subarray + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store offset=12 - i32.const 0 - local.set $9 - local.get $6 + local.get $0 i32.load offset=4 - local.set $4 - local.get $6 + local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|0140 - local.get $3 - local.get $9 - i32.gt_u - if - local.get $9 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $0 - i32.load - local.set $1 - local.get $0 - local.get $2 - local.get $9 - i32.sub - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $0 - i32.load - i32.store - local.get $0 - local.get $1 - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $while-continue|0140 - end - end - end - local.get $6 + call $~lib/util/bytes/REVERSE + local.get $0 i32.store offset=16 - local.get $6 + local.get $0 i32.const 0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint8Array#__get i32.const 8 i32.ne - br_if $folding-inner19 - local.get $6 + br_if $folding-inner32 + local.get $0 i32.const 1 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint8Array#__get i32.const 7 i32.ne - br_if $folding-inner20 - local.get $6 + br_if $folding-inner33 + local.get $0 i32.const 2 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint8Array#__get i32.const 6 i32.ne - br_if $folding-inner21 - local.get $6 + br_if $folding-inner34 + local.get $0 i32.const 3 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint8Array#__get i32.const 5 i32.ne - br_if $folding-inner22 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -57348,234 +57892,138 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 + local.tee $2 i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 7616 - i32.store - local.get $0 - i32.const 7628 - i32.load - local.tee $11 - call $~lib/typedarray/Uint32Array#constructor - local.tee $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $11 - call $~lib/typedarray/Uint32Array#constructor - local.tee $9 - i32.store offset=8 - loop $for-loop|040141 - local.get $1 - local.get $11 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $9 - local.get $1 - i32.const 7616 - local.get $1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|040141 - end - end - i32.const 0 - local.set $1 - local.get $8 - i32.load offset=4 - local.set $6 - local.get $8 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $4 - local.get $0 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|0143 - local.get $1 - local.get $4 - i32.lt_u - if - local.get $1 - i32.const 2 - i32.shl - local.get $6 - i32.add - local.tee $0 - i32.load - local.set $2 - local.get $0 - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - local.get $6 - i32.add - local.tee $0 - i32.load - i32.store - local.get $0 - local.get $2 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0143 - end + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 7616 + i32.store + local.get $2 + i32.const 7628 + i32.load + local.tee $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=8 + loop $for-loop|0125 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $2 + 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 $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 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0125 end end + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + call $~lib/util/bytes/REVERSE i32.const 0 - local.set $1 - loop $for-loop|141 - local.get $1 - local.get $11 + local.set $0 + loop $for-loop|1126 + local.get $0 + local.get $4 i32.lt_s if - local.get $8 - local.get $1 - call $~lib/typedarray/Uint32Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 7616 - local.get $11 + local.get $4 i32.const 1 i32.sub - local.get $1 + local.get $0 i32.sub call $~lib/array/Array#__get + i32.const 255 + i32.and i32.ne - br_if $folding-inner18 - local.get $1 + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|141 + local.set $0 + br $for-loop|1126 end end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $3 i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $6 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store offset=12 - i32.const 0 - local.set $9 - local.get $6 + local.get $0 i32.load offset=4 - local.set $4 - local.get $6 + local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|0145 - local.get $3 - local.get $9 - i32.gt_u - if - local.get $9 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $0 - i32.load - local.set $1 - local.get $0 - local.get $2 - local.get $9 - i32.sub - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $0 - i32.load - i32.store - local.get $0 - local.get $1 - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $while-continue|0145 - end - end - end - local.get $6 + call $~lib/util/bytes/REVERSE + local.get $0 i32.store offset=16 - local.get $6 + local.get $0 i32.const 0 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 8 i32.ne - br_if $folding-inner19 - local.get $6 + br_if $folding-inner32 + local.get $0 i32.const 1 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 7 i32.ne - br_if $folding-inner20 - local.get $6 + br_if $folding-inner33 + local.get $0 i32.const 2 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 6 i32.ne - br_if $folding-inner21 - local.get $6 + br_if $folding-inner34 + local.get $0 i32.const 3 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 i32.ne - br_if $folding-inner22 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -57583,237 +58031,130 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i64.const 0 i64.store offset=8 - local.get $0 + local.get $2 i32.const 0 i32.store offset=16 - local.get $0 + local.get $2 i32.const 7616 i32.store - local.get $0 + local.get $2 i32.const 7628 i32.load - local.tee $9 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 + local.tee $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 i32.store offset=8 - loop $for-loop|044 - local.get $1 - local.get $9 + loop $for-loop|0127 + local.get $0 + local.get $4 i32.lt_s if - local.get $6 - local.get $1 + local.get $2 + local.get $0 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $8 - local.get $1 + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $3 + local.get $0 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|044 + local.set $0 + br $for-loop|0127 end end + local.get $2 + call $~lib/typedarray/Int16Array#reverse + drop i32.const 0 - local.set $1 - local.get $6 - i32.load offset=4 - local.set $4 - local.get $6 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $3 + local.set $0 + loop $for-loop|1128 local.get $0 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|0146 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $1 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $0 - i64.load - local.set $10 - local.get $0 - local.get $2 - local.get $1 - i32.sub - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $0 - i64.load - i64.store - local.get $0 - local.get $10 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0146 - end - end - end - i32.const 0 - local.set $1 - loop $for-loop|145 - local.get $1 - local.get $9 + local.get $4 i32.lt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Int64Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Int16Array#__get i32.const 7616 - local.get $9 + local.get $4 i32.const 1 i32.sub - local.get $1 + local.get $0 i32.sub call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - br_if $folding-inner18 - local.get $1 + i32.extend16_s + i32.ne + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|145 + local.set $0 + br $for-loop|1128 end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $4 + call $~lib/typedarray/Int16Array#subarray + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=12 - i32.const 0 - local.set $9 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u + local.get $0 + call $~lib/typedarray/Int16Array#reverse local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|0148 - local.get $2 - local.get $9 - i32.gt_u - if - local.get $9 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $0 - i64.load - local.set $10 - local.get $0 - local.get $1 - local.get $9 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $0 - i64.load - i64.store - local.get $0 - local.get $10 - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $while-continue|0148 - end - end - end - local.get $4 i32.store offset=16 - local.get $4 + local.get $0 i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - br_if $folding-inner19 - local.get $4 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne - br_if $folding-inner20 - local.get $4 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne - br_if $folding-inner21 - local.get $4 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - br_if $folding-inner22 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -57821,237 +58162,131 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i64.const 0 i64.store offset=8 - local.get $0 + local.get $2 i32.const 0 i32.store offset=16 - local.get $0 + local.get $2 i32.const 7616 i32.store - local.get $0 + local.get $2 i32.const 7628 i32.load - local.tee $9 - call $~lib/typedarray/Uint64Array#constructor - local.tee $6 + local.tee $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 - call $~lib/typedarray/Uint64Array#constructor - local.tee $8 + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 i32.store offset=8 - loop $for-loop|048 - local.get $1 - local.get $9 + loop $for-loop|0129 + local.get $0 + local.get $4 i32.lt_s if - local.get $6 - local.get $1 + local.get $2 + local.get $0 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $8 - local.get $1 + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $3 + local.get $0 i32.const 7616 - local.get $1 + local.get $0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|048 + local.set $0 + br $for-loop|0129 end end + local.get $2 + call $~lib/typedarray/Int16Array#reverse + drop i32.const 0 - local.set $1 - local.get $6 - i32.load offset=4 - local.set $4 - local.get $6 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $3 + local.set $0 + loop $for-loop|1130 local.get $0 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|0150 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $1 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $0 - i64.load - local.set $10 - local.get $0 - local.get $2 - local.get $1 - i32.sub - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $0 - i64.load - i64.store - local.get $0 - local.get $10 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0150 - end - end - end - i32.const 0 - local.set $1 - loop $for-loop|149 - local.get $1 - local.get $9 + local.get $4 i32.lt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Uint64Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Uint16Array#__get i32.const 7616 - local.get $9 + local.get $4 i32.const 1 i32.sub - local.get $1 + local.get $0 i32.sub call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - br_if $folding-inner18 - local.get $1 + i32.const 65535 + i32.and + i32.ne + br_if $folding-inner31 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|149 + local.set $0 + br $for-loop|1130 end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $4 + call $~lib/typedarray/Uint16Array#subarray + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=12 - i32.const 0 - local.set $9 - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u + local.get $0 + call $~lib/typedarray/Int16Array#reverse local.tee $0 - i32.const 1 - i32.gt_u - if - local.get $0 - i32.const 1 - i32.shr_u - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|0152 - local.get $2 - local.get $9 - i32.gt_u - if - local.get $9 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $0 - i64.load - local.set $10 - local.get $0 - local.get $1 - local.get $9 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $0 - i64.load - i64.store - local.get $0 - local.get $10 - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $while-continue|0152 - end - end - end - local.get $4 i32.store offset=16 - local.get $4 + local.get $0 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - br_if $folding-inner19 - local.get $4 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $0 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne - br_if $folding-inner20 - local.get $4 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $0 i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne - br_if $folding-inner21 - local.get $4 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $0 i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - br_if $folding-inner22 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.ne + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58059,7 +58294,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58076,138 +58311,136 @@ local.get $0 i32.const 7628 i32.load + local.tee $10 + call $~lib/typedarray/Int32Array#constructor local.tee $9 - call $~lib/typedarray/Float32Array#constructor - local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 - call $~lib/typedarray/Float32Array#constructor + local.get $10 + call $~lib/typedarray/Int32Array#constructor local.tee $8 i32.store offset=8 - loop $for-loop|052110 + loop $for-loop|0171 local.get $1 - local.get $9 + local.get $10 i32.lt_s if - local.get $6 + local.get $9 local.get $1 i32.const 7616 local.get $1 call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + call $~lib/typedarray/Int32Array#__set local.get $8 local.get $1 i32.const 7616 local.get $1 call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + call $~lib/typedarray/Int32Array#__set local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|052110 + br $for-loop|0171 end end i32.const 0 - local.set $1 - local.get $6 + local.set $0 + local.get $9 i32.load offset=4 - local.set $4 - local.get $6 + local.set $6 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u - local.set $3 - local.get $0 + local.set $4 + local.get $1 i32.const 1 i32.sub - local.set $2 - loop $while-continue|0153 - local.get $1 - local.get $3 + local.set $3 + loop $while-continue|0 + local.get $0 + local.get $4 i32.lt_u if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add - local.tee $0 - f32.load - local.set $5 - local.get $0 - local.get $2 + local.tee $1 + i32.load + local.set $2 local.get $1 + local.get $3 + local.get $0 i32.sub i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add - local.tee $0 - f32.load - f32.store - local.get $0 - local.get $5 - f32.store + local.tee $1 + i32.load + i32.store local.get $1 + local.get $2 + i32.store + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|0153 + local.set $0 + br $while-continue|0 end end end i32.const 0 local.set $1 - loop $for-loop|153 + loop $for-loop|1131 local.get $1 - local.get $9 + local.get $10 i32.lt_s if - local.get $6 + local.get $9 local.get $1 - call $~lib/typedarray/Float32Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 7616 - local.get $9 + local.get $10 i32.const 1 i32.sub local.get $1 i32.sub call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - br_if $folding-inner18 + i32.ne + br_if $folding-inner31 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|153 + br $for-loop|1131 end end global.get $~lib/memory/__stack_pointer local.get $8 + i32.const 4 i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.set $4 + call $~lib/typedarray/Int32Array#subarray + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $8 i32.store offset=12 i32.const 0 - local.set $9 - local.get $4 + local.set $1 + local.get $8 i32.load offset=4 - local.set $3 - local.get $4 + local.set $6 + local.get $8 i32.load offset=8 i32.const 2 i32.shr_u @@ -58218,78 +58451,76 @@ local.get $0 i32.const 1 i32.shr_u - local.set $2 + local.set $4 local.get $0 i32.const 1 i32.sub - local.set $1 - loop $while-continue|0155 - local.get $2 - local.get $9 - i32.gt_u + local.set $3 + loop $while-continue|0133 + local.get $1 + local.get $4 + i32.lt_u if - local.get $9 + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add local.tee $0 - f32.load - local.set $5 + i32.load + local.set $2 local.get $0 + local.get $3 local.get $1 - local.get $9 i32.sub i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add local.tee $0 - f32.load - f32.store + i32.load + i32.store local.get $0 - local.get $5 - f32.store - local.get $9 + local.get $2 + i32.store + local.get $1 i32.const 1 i32.add - local.set $9 - br $while-continue|0155 + local.set $1 + br $while-continue|0133 end end end - local.get $4 + local.get $8 i32.store offset=16 - local.get $4 + local.get $8 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - br_if $folding-inner19 - local.get $4 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $8 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne - br_if $folding-inner20 - local.get $4 + call $~lib/typedarray/Int32Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $8 i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - br_if $folding-inner21 - local.get $4 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $8 i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - br_if $folding-inner22 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58297,7 +58528,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58314,141 +58545,137 @@ local.get $0 i32.const 7628 i32.load + local.tee $10 + call $~lib/typedarray/Uint32Array#constructor local.tee $9 - call $~lib/typedarray/Float64Array#constructor - local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 - call $~lib/typedarray/Float64Array#constructor + local.get $10 + call $~lib/typedarray/Uint32Array#constructor local.tee $8 i32.store offset=8 - loop $for-loop|056156 - local.get $1 - local.get $9 - i32.lt_s + loop $for-loop|021134 + local.get $10 + local.get $16 + i32.gt_s if - local.get $6 - local.get $1 + local.get $9 + local.get $16 i32.const 7616 - local.get $1 + local.get $16 call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $8 - local.get $1 + local.get $16 i32.const 7616 - local.get $1 + local.get $16 call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 + call $~lib/typedarray/Uint32Array#__set + local.get $16 i32.const 1 i32.add - local.set $1 - br $for-loop|056156 + local.set $16 + br $for-loop|021134 end end i32.const 0 - local.set $1 - local.get $6 + local.set $0 + local.get $9 i32.load offset=4 - local.set $4 - local.get $6 + local.set $6 + local.get $9 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u - local.set $3 - local.get $0 + local.set $4 + local.get $1 i32.const 1 i32.sub - local.set $2 - loop $while-continue|0157 - local.get $1 - local.get $3 + local.set $3 + loop $while-continue|0136 + local.get $0 + local.get $4 i32.lt_u if - local.get $1 - i32.const 3 + local.get $0 + i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add - local.tee $0 - f64.load - local.set $7 - local.get $0 - local.get $2 + local.tee $1 + i32.load + local.set $2 local.get $1 + local.get $3 + local.get $0 i32.sub - i32.const 3 + i32.const 2 i32.shl - local.get $4 + local.get $6 i32.add - local.tee $0 - f64.load - f64.store - local.get $0 - local.get $7 - f64.store + local.tee $1 + i32.load + i32.store local.get $1 + local.get $2 + i32.store + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|0157 + local.set $0 + br $while-continue|0136 end end end i32.const 0 - local.set $1 - loop $for-loop|157 - local.get $1 - local.get $9 - i32.lt_s + local.set $16 + loop $for-loop|124 + local.get $10 + local.get $16 + i32.gt_s if - local.get $6 - local.get $1 - call $~lib/typedarray/Float64Array#__get - i32.const 7616 local.get $9 + local.get $16 + call $~lib/typedarray/Uint32Array#__get + i32.const 7616 + local.get $10 i32.const 1 i32.sub - local.get $1 + local.get $16 i32.sub call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - br_if $folding-inner18 - local.get $1 + i32.ne + br_if $folding-inner31 + local.get $16 i32.const 1 i32.add - local.set $1 - br $for-loop|157 + local.set $16 + br $for-loop|124 end end global.get $~lib/memory/__stack_pointer local.get $8 - i32.const 4 i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.set $4 + call $~lib/typedarray/Uint32Array#subarray + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $8 i32.store offset=12 i32.const 0 - local.set $9 - local.get $4 + local.set $1 + local.get $8 i32.load offset=4 - local.set $3 - local.get $4 + local.set $6 + local.get $8 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u local.tee $0 i32.const 1 @@ -58457,76 +58684,80 @@ local.get $0 i32.const 1 i32.shr_u - local.set $2 + local.set $4 local.get $0 i32.const 1 i32.sub - local.set $1 - loop $while-continue|0159 - local.get $2 - local.get $9 - i32.gt_u + local.set $3 + loop $while-continue|0138 + local.get $1 + local.get $4 + i32.lt_u if - local.get $9 - i32.const 3 + local.get $1 + i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add local.tee $0 - f64.load - local.set $7 + i32.load + local.set $2 local.get $0 + local.get $3 local.get $1 - local.get $9 i32.sub - i32.const 3 + i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add local.tee $0 - f64.load - f64.store + i32.load + i32.store local.get $0 - local.get $7 - f64.store - local.get $9 + local.get $2 + i32.store + local.get $1 i32.const 1 i32.add - local.set $9 - br $while-continue|0159 + local.set $1 + br $while-continue|0138 end end end - local.get $4 + local.get $8 i32.store offset=16 - local.get $4 + local.get $8 i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.ne - br_if $folding-inner19 - local.get $4 + call $~lib/typedarray/Uint32Array#__get + i32.const 8 + i32.ne + br_if $folding-inner32 + local.get $8 i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne - br_if $folding-inner20 - local.get $4 + call $~lib/typedarray/Uint32Array#__get + i32.const 7 + i32.ne + br_if $folding-inner33 + local.get $8 i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne - br_if $folding-inner21 - local.get $4 + call $~lib/typedarray/Uint32Array#__get + i32.const 6 + i32.ne + br_if $folding-inner34 + local.get $8 i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - br_if $folding-inner22 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> @@ -58548,9 +58779,9 @@ f64.const nan:0x8000000000000 call $~lib/typedarray/Float64Array#__set i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $4 i32.load offset=8 @@ -58562,13 +58793,13 @@ local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|0160 - local.get $0 + loop $while-continue|0139 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 3 i32.shl local.get $2 @@ -58577,17 +58808,17 @@ f64.const nan:0x8000000000000 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|0160 + local.set $1 + br $while-continue|0139 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -58598,28 +58829,26 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|060 + loop $while-continue|0140 local.get $1 - local.get $2 - i32.lt_s + local.get $51 + i32.gt_s if i32.const 1 - local.get $1 + local.get $51 i32.const 3 i32.shl local.get $0 @@ -58634,11 +58863,11 @@ i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $1 + local.get $51 i32.const 1 i32.add - local.set $1 - br $while-continue|060 + local.set $51 + br $while-continue|0140 end end i32.const 0 @@ -58662,9 +58891,9 @@ f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $4 i32.load offset=8 @@ -58676,13 +58905,13 @@ local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|062 - local.get $0 + loop $while-continue|0141 + local.get $1 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl local.get $2 @@ -58691,17 +58920,17 @@ f32.const nan:0x400000 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|062 + local.set $1 + br $while-continue|0141 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -58712,28 +58941,26 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) i32.const 0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|064 + loop $while-continue|029 local.get $1 - local.get $2 - i32.lt_s + local.get $52 + i32.gt_s if i32.const 1 - local.get $1 + local.get $52 i32.const 2 i32.shl local.get $0 @@ -58748,11 +58975,11 @@ i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $1 + local.get $52 i32.const 1 i32.add - local.set $1 - br $while-continue|064 + local.set $52 + br $while-continue|029 end end i32.const 0 @@ -58773,7 +59000,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58822,7 +59049,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -58830,7 +59057,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -58840,23 +59067,22 @@ i32.store local.get $1 call $~lib/typedarray/Int8Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 9616 i32.store offset=8 - local.get $1 + local.get $0 i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -58868,7 +59094,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58917,7 +59143,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -58932,7 +59158,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -58944,7 +59170,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58993,7 +59219,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -59008,7 +59234,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59020,7 +59246,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59069,7 +59295,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59077,7 +59303,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59087,23 +59313,22 @@ i32.store local.get $1 call $~lib/typedarray/Int16Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 9616 i32.store offset=8 - local.get $1 + local.get $0 i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59115,7 +59340,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59164,7 +59389,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59172,7 +59397,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59182,23 +59407,22 @@ i32.store local.get $1 call $~lib/typedarray/Uint16Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 9616 i32.store offset=8 - local.get $1 + local.get $0 i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59210,7 +59434,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59259,7 +59483,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59267,7 +59491,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59277,23 +59501,22 @@ i32.store local.get $1 call $~lib/typedarray/Int32Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 9616 i32.store offset=8 - local.get $1 + local.get $0 i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59305,7 +59528,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59354,7 +59577,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59362,7 +59585,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59372,23 +59595,22 @@ i32.store local.get $1 call $~lib/typedarray/Uint32Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 9616 i32.store offset=8 - local.get $1 + local.get $0 i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59400,7 +59622,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59449,7 +59671,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59457,7 +59679,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59467,23 +59689,22 @@ i32.store local.get $1 call $~lib/typedarray/Int64Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 9616 i32.store offset=8 - local.get $1 + local.get $0 i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59495,7 +59716,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59544,7 +59765,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner23 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59552,7 +59773,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59562,23 +59783,22 @@ i32.store local.get $1 call $~lib/typedarray/Uint64Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 9616 i32.store offset=8 - local.get $1 + local.get $0 i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner24 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59590,7 +59810,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59639,7 +59859,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner25 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59647,7 +59867,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59657,23 +59877,22 @@ i32.store local.get $1 call $~lib/typedarray/Float32Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 10800 i32.store offset=8 - local.get $1 + local.get $0 i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner26 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59685,7 +59904,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59734,7 +59953,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner25 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59742,7 +59961,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59752,23 +59971,22 @@ i32.store local.get $1 call $~lib/typedarray/Float64Array#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.tee $0 - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 10800 i32.store offset=8 - local.get $1 + local.get $0 i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner26 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59819,8 +60037,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $9 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59828,7 +60044,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59849,23 +60065,23 @@ call $~lib/typedarray/Int8Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|069 + loop $for-loop|035142 local.get $6 - local.get $9 + local.get $21 i32.gt_s if local.get $4 - local.get $9 + local.get $21 i32.const 10928 - local.get $9 + local.get $21 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $9 + local.get $21 i32.const 1 i32.add - local.set $9 - br $for-loop|069 + local.set $21 + br $for-loop|035142 end end global.get $~lib/memory/__stack_pointer @@ -59882,24 +60098,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59937,33 +60153,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $9 - loop $for-loop|171 + local.set $21 + loop $for-loop|139 local.get $6 - local.get $9 + local.get $21 i32.gt_s if local.get $4 - local.get $9 + local.get $21 call $~lib/typedarray/Int8Array#__get local.get $0 - local.get $9 + local.get $21 call $~lib/typedarray/Int8Array#__get i32.ne - br_if $folding-inner27 - local.get $9 + br_if $folding-inner17 + local.get $21 i32.const 1 i32.add - local.set $9 - br $for-loop|171 + local.set $21 + br $for-loop|139 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59971,7 +60185,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59992,24 +60206,24 @@ call $~lib/typedarray/Uint8Array#constructor local.tee $2 i32.store offset=4 - loop $for-loop|074 - local.get $1 + loop $for-loop|044 local.get $3 - i32.lt_s + local.get $22 + i32.gt_s if local.get $2 - local.get $1 + local.get $22 i32.const 10928 - local.get $1 + local.get $22 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $22 i32.const 1 i32.add - local.set $1 - br $for-loop|074 + local.set $22 + br $for-loop|044 end end global.get $~lib/memory/__stack_pointer @@ -60026,9 +60240,9 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $2 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $0 @@ -60042,33 +60256,31 @@ local.tee $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|177 - local.get $1 + local.set $22 + loop $for-loop|149 local.get $3 - i32.lt_s + local.get $22 + i32.gt_s if local.get $2 - local.get $1 + local.get $22 call $~lib/typedarray/Uint8Array#__get local.get $0 - local.get $1 + local.get $22 call $~lib/typedarray/Uint8Array#__get i32.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $22 i32.const 1 i32.add - local.set $1 - br $for-loop|177 + local.set $22 + br $for-loop|149 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $9 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60076,7 +60288,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60097,24 +60309,24 @@ call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $4 i32.store offset=4 - loop $for-loop|080131 + loop $for-loop|054 local.get $6 - local.get $9 + local.get $23 i32.gt_s if local.get $4 - local.get $9 + local.get $23 i32.const 10928 - local.get $9 + local.get $23 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $9 + local.get $23 i32.const 1 i32.add - local.set $9 - br $for-loop|080131 + local.set $23 + br $for-loop|054 end end global.get $~lib/memory/__stack_pointer @@ -60131,24 +60343,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60186,33 +60398,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $9 - loop $for-loop|183 + local.set $23 + loop $for-loop|159 local.get $6 - local.get $9 + local.get $23 i32.gt_s if local.get $4 - local.get $9 + local.get $23 call $~lib/typedarray/Uint8ClampedArray#__get local.get $0 - local.get $9 + local.get $23 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne - br_if $folding-inner27 - local.get $9 + br_if $folding-inner17 + local.get $23 i32.const 1 i32.add - local.set $9 - br $for-loop|183 + local.set $23 + br $for-loop|159 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60220,7 +60430,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60241,23 +60451,23 @@ call $~lib/typedarray/Int16Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|086139 - local.get $1 + loop $for-loop|064200 local.get $6 - i32.lt_s + local.get $24 + i32.gt_s if local.get $4 - local.get $1 + local.get $24 i32.const 10928 - local.get $1 + local.get $24 call $~lib/array/Array#__get i32.extend16_s call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $24 i32.const 1 i32.add - local.set $1 - br $for-loop|086139 + local.set $24 + br $for-loop|064200 end end global.get $~lib/memory/__stack_pointer @@ -60274,24 +60484,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -60302,7 +60512,7 @@ local.tee $1 i32.const 1 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 6 @@ -60331,33 +60541,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|189 - local.get $1 + local.set $24 + loop $for-loop|169 local.get $6 - i32.lt_s + local.get $24 + i32.gt_s if local.get $4 - local.get $1 + local.get $24 call $~lib/typedarray/Int16Array#__get local.get $0 - local.get $1 + local.get $24 call $~lib/typedarray/Int16Array#__get i32.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $24 i32.const 1 i32.add - local.set $1 - br $for-loop|189 + local.set $24 + br $for-loop|169 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60365,7 +60573,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60386,24 +60594,24 @@ call $~lib/typedarray/Uint16Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|092147 - local.get $1 + loop $for-loop|074 local.get $6 - i32.lt_s + local.get $25 + i32.gt_s if local.get $4 - local.get $1 + local.get $25 i32.const 10928 - local.get $1 + local.get $25 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $25 i32.const 1 i32.add - local.set $1 - br $for-loop|092147 + local.set $25 + br $for-loop|074 end end global.get $~lib/memory/__stack_pointer @@ -60420,24 +60628,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -60448,7 +60656,7 @@ local.tee $1 i32.const 1 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 7 @@ -60477,33 +60685,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|195 - local.get $1 + local.set $25 + loop $for-loop|179 local.get $6 - i32.lt_s + local.get $25 + i32.gt_s if local.get $4 - local.get $1 + local.get $25 call $~lib/typedarray/Uint16Array#__get local.get $0 - local.get $1 + local.get $25 call $~lib/typedarray/Uint16Array#__get i32.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $25 i32.const 1 i32.add - local.set $1 - br $for-loop|195 + local.set $25 + br $for-loop|179 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60511,7 +60717,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60532,22 +60738,22 @@ call $~lib/typedarray/Int32Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|098155 - local.get $1 + loop $for-loop|084146 local.get $6 - i32.lt_s + local.get $26 + i32.gt_s if local.get $4 - local.get $1 + local.get $26 i32.const 10928 - local.get $1 + local.get $26 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $26 i32.const 1 i32.add - local.set $1 - br $for-loop|098155 + local.set $26 + br $for-loop|084146 end end global.get $~lib/memory/__stack_pointer @@ -60564,24 +60770,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -60592,7 +60798,7 @@ local.tee $1 i32.const 3 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 8 @@ -60621,33 +60827,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|1101 - local.get $1 + local.set $26 + loop $for-loop|189 local.get $6 - i32.lt_s + local.get $26 + i32.gt_s if local.get $4 - local.get $1 + local.get $26 call $~lib/typedarray/Int32Array#__get local.get $0 - local.get $1 + local.get $26 call $~lib/typedarray/Int32Array#__get i32.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $26 i32.const 1 i32.add - local.set $1 - br $for-loop|1101 + local.set $26 + br $for-loop|189 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60655,7 +60859,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60676,22 +60880,22 @@ call $~lib/typedarray/Uint32Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|0104163 - local.get $1 + loop $for-loop|094148 local.get $6 - i32.lt_s + local.get $27 + i32.gt_s if local.get $4 - local.get $1 + local.get $27 i32.const 10928 - local.get $1 + local.get $27 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $27 i32.const 1 i32.add - local.set $1 - br $for-loop|0104163 + local.set $27 + br $for-loop|094148 end end global.get $~lib/memory/__stack_pointer @@ -60708,24 +60912,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -60736,7 +60940,7 @@ local.tee $1 i32.const 3 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 9 @@ -60765,33 +60969,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|1107 - local.get $1 + local.set $27 + loop $for-loop|199 local.get $6 - i32.lt_s + local.get $27 + i32.gt_s if local.get $4 - local.get $1 + local.get $27 call $~lib/typedarray/Uint32Array#__get local.get $0 - local.get $1 + local.get $27 call $~lib/typedarray/Uint32Array#__get i32.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $27 i32.const 1 i32.add - local.set $1 - br $for-loop|1107 + local.set $27 + br $for-loop|199 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60799,7 +61001,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60820,23 +61022,23 @@ call $~lib/typedarray/Int64Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|0110 - local.get $1 + loop $for-loop|0104 local.get $6 - i32.lt_s + local.get $28 + i32.gt_s if local.get $4 - local.get $1 + local.get $28 i32.const 10928 - local.get $1 + local.get $28 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $28 i32.const 1 i32.add - local.set $1 - br $for-loop|0110 + local.set $28 + br $for-loop|0104 end end global.get $~lib/memory/__stack_pointer @@ -60853,24 +61055,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -60881,7 +61083,7 @@ local.tee $1 i32.const 7 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 10 @@ -60910,33 +61112,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|1113 - local.get $1 + local.set $28 + loop $for-loop|1109 local.get $6 - i32.lt_s + local.get $28 + i32.gt_s if local.get $4 - local.get $1 + local.get $28 call $~lib/typedarray/Int64Array#__get local.get $0 - local.get $1 + local.get $28 call $~lib/typedarray/Int64Array#__get i64.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $28 i32.const 1 i32.add - local.set $1 - br $for-loop|1113 + local.set $28 + br $for-loop|1109 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60944,7 +61144,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60965,23 +61165,23 @@ call $~lib/typedarray/Uint64Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|0116 - local.get $1 + loop $for-loop|0114151 local.get $6 - i32.lt_s + local.get $29 + i32.gt_s if local.get $4 - local.get $1 + local.get $29 i32.const 10928 - local.get $1 + local.get $29 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $29 i32.const 1 i32.add - local.set $1 - br $for-loop|0116 + local.set $29 + br $for-loop|0114151 end end global.get $~lib/memory/__stack_pointer @@ -60998,24 +61198,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61026,7 +61226,7 @@ local.tee $1 i32.const 7 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 11 @@ -61055,24 +61255,24 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 + local.set $29 loop $for-loop|1119 - local.get $1 local.get $6 - i32.lt_s + local.get $29 + i32.gt_s if local.get $4 - local.get $1 + local.get $29 call $~lib/typedarray/Uint64Array#__get local.get $0 - local.get $1 + local.get $29 call $~lib/typedarray/Uint64Array#__get i64.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $29 i32.const 1 i32.add - local.set $1 + local.set $29 br $for-loop|1119 end end @@ -61080,8 +61280,6 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61089,7 +61287,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61110,23 +61308,23 @@ call $~lib/typedarray/Float32Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|0122 - local.get $1 + loop $for-loop|0124 local.get $6 - i32.lt_s + local.get $30 + i32.gt_s if local.get $4 - local.get $1 + local.get $30 i32.const 10928 - local.get $1 + local.get $30 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $30 i32.const 1 i32.add - local.set $1 - br $for-loop|0122 + local.set $30 + br $for-loop|0124 end end global.get $~lib/memory/__stack_pointer @@ -61143,24 +61341,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61171,7 +61369,7 @@ local.tee $1 i32.const 3 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 12 @@ -61200,33 +61398,31 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|1125 - local.get $1 + local.set $30 + loop $for-loop|1129 local.get $6 - i32.lt_s + local.get $30 + i32.gt_s if local.get $4 - local.get $1 + local.get $30 call $~lib/typedarray/Float32Array#__get local.get $0 - local.get $1 + local.get $30 call $~lib/typedarray/Float32Array#__get f32.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $30 i32.const 1 i32.add - local.set $1 - br $for-loop|1125 + local.set $30 + br $for-loop|1129 end end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61234,7 +61430,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61255,23 +61451,23 @@ call $~lib/typedarray/Float64Array#constructor local.tee $4 i32.store offset=4 - loop $for-loop|0128 - local.get $1 + loop $for-loop|0134 local.get $6 - i32.lt_s + local.get $31 + i32.gt_s if local.get $4 - local.get $1 + local.get $31 i32.const 10928 - local.get $1 + local.get $31 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $31 i32.const 1 i32.add - local.set $1 - br $for-loop|0128 + local.set $31 + br $for-loop|0134 end end global.get $~lib/memory/__stack_pointer @@ -61288,24 +61484,24 @@ i32.load i32.sub local.tee $0 + local.get $0 local.get $4 i32.load offset=8 - local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $3 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61316,7 +61512,7 @@ local.tee $1 i32.const 7 i32.and - br_if $folding-inner28 + br_if $folding-inner18 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 13 @@ -61345,25 +61541,25 @@ local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - loop $for-loop|1131 - local.get $1 + local.set $31 + loop $for-loop|1139 local.get $6 - i32.lt_s + local.get $31 + i32.gt_s if local.get $4 - local.get $1 + local.get $31 call $~lib/typedarray/Float64Array#__get local.get $0 - local.get $1 + local.get $31 call $~lib/typedarray/Float64Array#__get f64.ne - br_if $folding-inner27 - local.get $1 + br_if $folding-inner17 + local.get $31 i32.const 1 i32.add - local.set $1 - br $for-loop|1131 + local.set $31 + br $for-loop|1139 end end global.get $~lib/memory/__stack_pointer @@ -61437,8 +61633,6 @@ i32.const 1 i32.const -1 call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $9 local.get $6 i32.load offset=8 local.get $0 @@ -61448,7 +61642,7 @@ i32.const 1 i32.add i32.lt_s - br_if $folding-inner29 + br_if $folding-inner20 local.get $6 i32.load offset=4 i32.const 1 @@ -61462,15 +61656,15 @@ i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0135 + loop $for-loop|0145 local.get $0 - local.get $9 + local.get $48 i32.gt_s if local.get $2 - local.get $9 + local.get $48 i32.add - local.get $9 + local.get $48 i32.const 2 i32.shl local.get $1 @@ -61492,19 +61686,17 @@ i32.const 0 end i32.store8 - local.get $9 + local.get $48 i32.const 1 i32.add - local.set $9 - br $for-loop|0135 + local.set $48 + br $for-loop|0145 end end local.get $6 local.get $3 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 0 - local.set $9 local.get $6 i32.load offset=8 local.get $4 @@ -61514,7 +61706,7 @@ i32.const 8 i32.add i32.lt_s - br_if $folding-inner29 + br_if $folding-inner20 local.get $6 i32.load offset=4 i32.const 8 @@ -61528,26 +61720,26 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0139 + loop $for-loop|0151 local.get $1 - local.get $9 + local.get $49 i32.gt_s if local.get $3 - local.get $9 + local.get $49 i32.add - i32.const 255 - local.get $9 + local.get $49 i32.const 2 i32.shl local.get $2 i32.add i32.load local.tee $0 + i32.const 255 + local.get $0 i32.sub i32.const 31 i32.shr_s - local.get $0 i32.or local.get $0 i32.const 31 @@ -61556,11 +61748,11 @@ i32.xor i32.and i32.store8 - local.get $9 + local.get $49 i32.const 1 i32.add - local.set $9 - br $for-loop|0139 + local.set $49 + br $for-loop|0151 end end i32.const 10 @@ -61617,8 +61809,6 @@ i32.const 3 i32.const 300 call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $9 local.get $6 i32.load offset=8 local.get $0 @@ -61626,7 +61816,7 @@ i32.const 2 i32.shr_u i32.lt_s - br_if $folding-inner29 + br_if $folding-inner20 local.get $6 i32.load offset=4 local.set $3 @@ -61638,16 +61828,16 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|0143 + loop $for-loop|0157 local.get $1 - local.get $9 + local.get $50 i32.gt_s if local.get $3 - local.get $9 + local.get $50 i32.add i32.const 255 - local.get $9 + local.get $50 i32.const 2 i32.shl local.get $2 @@ -61659,11 +61849,11 @@ i32.gt_u select i32.store8 - local.get $9 + local.get $50 i32.const 1 i32.add - local.set $9 - br $for-loop|0143 + local.set $50 + br $for-loop|0157 end end local.get $6 @@ -61682,8 +61872,6 @@ local.get $6 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -61691,7 +61879,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61716,9 +61904,11 @@ i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -61726,7 +61916,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61739,7 +61929,7 @@ unreachable end i32.const 15344 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 15344 i32.store @@ -61748,7 +61938,7 @@ i32.load offset=4 local.get $2 i32.load offset=8 - local.get $1 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -61761,19 +61951,19 @@ call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15376 i32.store offset=8 @@ -61788,25 +61978,23 @@ call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -61814,7 +62002,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61839,9 +62027,11 @@ i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -61849,20 +62039,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1161 - block $0of1162 - block $outOfRange163 + block $1of1157 + block $0of1158 + block $outOfRange159 global.get $~argumentsLength - br_table $0of1162 $1of1161 $outOfRange163 + br_table $0of1158 $1of1157 $outOfRange159 end unreachable end i32.const 15408 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 15408 i32.store @@ -61871,7 +62061,7 @@ i32.load offset=4 local.get $2 i32.load offset=8 - local.get $1 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -61884,19 +62074,19 @@ call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15440 i32.store offset=8 @@ -61911,25 +62101,23 @@ call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -61937,7 +62125,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61962,9 +62150,11 @@ i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -61972,20 +62162,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1164 - block $0of1165 - block $outOfRange166 + block $1of1161 + block $0of1162 + block $outOfRange163 global.get $~argumentsLength - br_table $0of1165 $1of1164 $outOfRange166 + br_table $0of1162 $1of1161 $outOfRange163 end unreachable end i32.const 15472 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 15472 i32.store @@ -61994,7 +62184,7 @@ i32.load offset=4 local.get $2 i32.load offset=8 - local.get $1 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62007,19 +62197,19 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15504 i32.store offset=8 @@ -62034,19 +62224,19 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62058,7 +62248,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62083,11 +62273,11 @@ i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -62095,20 +62285,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1167 - block $0of1168 - block $outOfRange199 + block $1of131 + block $0of132 + block $outOfRange33 global.get $~argumentsLength - br_table $0of1168 $1of1167 $outOfRange199 + br_table $0of132 $1of131 $outOfRange33 end unreachable end i32.const 15536 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 15536 i32.store @@ -62119,7 +62309,7 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.get $9 + local.get $13 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62132,19 +62322,19 @@ call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15568 i32.store offset=8 @@ -62161,19 +62351,19 @@ call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62185,7 +62375,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62210,11 +62400,11 @@ i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -62222,20 +62412,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1202 - block $0of1203 - block $outOfRange204 + block $1of135 + block $0of136 + block $outOfRange37 global.get $~argumentsLength - br_table $0of1203 $1of1202 $outOfRange204 + br_table $0of136 $1of135 $outOfRange37 end unreachable end i32.const 15600 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 15600 i32.store @@ -62246,7 +62436,7 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.get $9 + local.get $13 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62259,19 +62449,19 @@ call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15632 i32.store offset=8 @@ -62288,19 +62478,19 @@ call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62312,7 +62502,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62337,11 +62527,11 @@ i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -62349,20 +62539,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1207 - block $0of1208 - block $outOfRange209 + block $1of139 + block $0of140 + block $outOfRange41 global.get $~argumentsLength - br_table $0of1208 $1of1207 $outOfRange209 + br_table $0of140 $1of139 $outOfRange41 end unreachable end i32.const 15664 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 15664 i32.store @@ -62373,7 +62563,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.get $9 + local.get $13 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62386,19 +62576,19 @@ call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15696 i32.store offset=8 @@ -62415,19 +62605,19 @@ call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62439,7 +62629,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62464,11 +62654,11 @@ i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -62476,20 +62666,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1212 - block $0of1213 - block $outOfRange214 + block $1of143 + block $0of144 + block $outOfRange45 global.get $~argumentsLength - br_table $0of1213 $1of1212 $outOfRange214 + br_table $0of144 $1of143 $outOfRange45 end unreachable end i32.const 15728 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 15728 i32.store @@ -62500,7 +62690,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.get $9 + local.get $13 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62513,19 +62703,19 @@ call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15760 i32.store offset=8 @@ -62542,19 +62732,19 @@ call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62566,7 +62756,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62591,11 +62781,11 @@ i32.const 0 i64.const 3 call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -62603,20 +62793,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1217 - block $0of1218 - block $outOfRange219 + block $1of147 + block $0of148 + block $outOfRange49 global.get $~argumentsLength - br_table $0of1218 $1of1217 $outOfRange219 + br_table $0of148 $1of147 $outOfRange49 end unreachable end i32.const 15792 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 15792 i32.store @@ -62627,7 +62817,7 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.get $9 + local.get $13 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62640,19 +62830,19 @@ call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15824 i32.store offset=8 @@ -62669,19 +62859,19 @@ call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62693,7 +62883,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62718,11 +62908,11 @@ i32.const 0 i64.const 3 call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -62730,20 +62920,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1222 - block $0of1223 - block $outOfRange224 + block $1of151 + block $0of152 + block $outOfRange53 global.get $~argumentsLength - br_table $0of1223 $1of1222 $outOfRange224 + br_table $0of152 $1of151 $outOfRange53 end unreachable end i32.const 15856 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 15856 i32.store @@ -62754,7 +62944,7 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.get $9 + local.get $13 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62767,19 +62957,19 @@ call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15888 i32.store offset=8 @@ -62796,19 +62986,19 @@ call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62820,7 +63010,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62845,11 +63035,11 @@ i32.const 0 f32.const 3 call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -62857,20 +63047,20 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1227 - block $0of1228 - block $outOfRange229 + block $1of155 + block $0of156 + block $outOfRange57 global.get $~argumentsLength - br_table $0of1228 $1of1227 $outOfRange229 + br_table $0of156 $1of155 $outOfRange57 end unreachable end i32.const 15920 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 15920 i32.store @@ -62881,7 +63071,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.get $9 + local.get $13 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -62894,19 +63084,19 @@ call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15952 i32.store offset=8 @@ -62923,19 +63113,19 @@ call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62947,7 +63137,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62984,19 +63174,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner30 + br_if $folding-inner36 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner31 + br_if $folding-inner37 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner32 + br_if $folding-inner38 global.get $~lib/memory/__stack_pointer i32.const 15984 i32.store offset=8 @@ -63013,19 +63203,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner33 + br_if $folding-inner39 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner34 + br_if $folding-inner40 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner35 + br_if $folding-inner41 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -63036,12 +63226,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0145176 + loop $while-continue|0161 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0145176 + br $while-continue|0161 end end end @@ -63071,213 +63261,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 323 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 323 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 344 + i32.const 345 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 345 + i32.const 346 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 346 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 367 + i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 388 - i32.const 3 + i32.const 675 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 389 - i32.const 3 + i32.const 676 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 390 - i32.const 3 + i32.const 672 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 438 - i32.const 3 + i32.const 673 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 440 - i32.const 3 + i32.const 730 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 461 - i32.const 3 + i32.const 1056 + i32.const 1632 + i32.const 1875 + i32.const 9 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 463 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1909 + i32.const 47 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 484 + i32.const 388 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 486 + i32.const 389 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 507 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 509 - i32.const 3 + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 541 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 570 - i32.const 5 + i32.const 440 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 575 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 576 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 577 + i32.const 484 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 578 + i32.const 486 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 675 - i32.const 5 + i32.const 507 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 676 - i32.const 5 + i32.const 509 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 672 + i32.const 570 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 673 - i32.const 5 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 730 - i32.const 5 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1056 - i32.const 1632 - i32.const 1875 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -63868,32 +64058,32 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 - local.get $4 + local.set $4 + local.get $3 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 local.get $0 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 if - local.get $4 local.get $5 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $5 local.get $0 i32.load offset=4 local.get $1 @@ -63901,7 +64091,7 @@ i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $0 i32.const 0 @@ -63911,9 +64101,9 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end @@ -63922,13 +64112,13 @@ i32.shl i32.add i32.store offset=4 - local.get $4 + local.get $5 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -63938,9 +64128,9 @@ select else local.get $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select end @@ -63959,7 +64149,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 ) (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -63981,32 +64171,32 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - local.get $4 + local.set $4 + local.get $3 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 local.get $0 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 if - local.get $4 local.get $5 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 + local.get $5 local.get $0 i32.load offset=4 local.get $1 @@ -64014,7 +64204,7 @@ i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $0 i32.const 0 @@ -64024,9 +64214,9 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end @@ -64035,13 +64225,13 @@ i32.shl i32.add i32.store offset=4 - local.get $4 + local.get $5 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -64051,9 +64241,9 @@ select else local.get $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select end @@ -64072,7 +64262,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 ) (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) (local $1 i32) @@ -64144,13 +64334,10 @@ local.tee $4 i32.const 0 i32.store - local.get $4 local.get $0 local.get $1 i32.shl - local.tee $4 - local.set $1 - local.get $4 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.set $5 @@ -64161,34 +64348,35 @@ local.get $1 call $~lib/memory/memory.copy end + local.get $4 local.get $5 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 local.get $5 i32.store local.get $5 if - local.get $1 + local.get $2 local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $2 local.get $5 i32.store offset=4 + local.get $2 local.get $1 - local.get $4 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -64210,92 +64398,92 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 i32.load offset=8 - local.set $3 - local.get $4 + local.set $4 + local.get $3 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 local.get $0 i32.load local.tee $5 i32.store local.get $5 if - local.get $4 + local.get $3 local.get $5 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $4 - local.get $0 - i32.load offset=4 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end - local.tee $0 + local.tee $1 + local.get $0 + i32.load offset=4 i32.add i32.store offset=4 - local.get $4 + local.get $3 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $3 + local.get $4 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select end - local.tee $1 - local.get $0 + local.tee $0 + local.get $1 local.get $0 local.get $1 - i32.lt_s + i32.gt_s select - local.get $0 + local.get $1 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 ) (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -64426,20 +64614,20 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -64451,7 +64639,7 @@ local.tee $0 i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -64486,7 +64674,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -64518,20 +64706,20 @@ i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 if - local.get $3 local.get $4 + local.get $3 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 @@ -64543,7 +64731,7 @@ local.tee $0 i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s @@ -64578,7 +64766,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -64600,37 +64788,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 - local.get $3 + local.set $3 + local.get $2 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 if - local.get $3 local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 4 i32.gt_u select @@ -64639,13 +64827,13 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -64655,9 +64843,9 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end @@ -64676,7 +64864,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -64698,37 +64886,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - local.set $2 - local.get $3 + local.set $3 + local.get $2 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 if - local.get $3 local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 4 i32.gt_u select @@ -64737,13 +64925,13 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -64753,9 +64941,9 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end @@ -64774,7 +64962,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -64796,37 +64984,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - local.get $3 + local.set $3 + local.get $2 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 if - local.get $3 local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 4 i32.gt_u select @@ -64835,13 +65023,13 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -64851,9 +65039,9 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end @@ -64872,7 +65060,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -64894,37 +65082,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 - local.get $3 + local.set $3 + local.get $2 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 if - local.get $3 local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 4 i32.gt_u select @@ -64933,13 +65121,13 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -64949,9 +65137,9 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end @@ -64970,7 +65158,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -64992,37 +65180,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.set $2 - local.get $3 + local.set $3 + local.get $2 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 if - local.get $3 local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 4 i32.gt_u select @@ -65031,13 +65219,13 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -65047,9 +65235,9 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end @@ -65068,7 +65256,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65090,37 +65278,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - local.get $3 + local.set $3 + local.get $2 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 i32.load - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 if - local.get $3 local.get $4 + local.get $2 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $3 + local.get $4 local.get $0 i32.load offset=4 i32.const 4 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 4 i32.gt_u select @@ -65129,13 +65317,13 @@ i32.shl i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $2 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -65145,9 +65333,9 @@ select else local.get $1 - local.get $2 + local.get $3 local.get $1 - local.get $2 + local.get $3 i32.lt_s select end @@ -65166,7 +65354,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -65208,71 +65396,70 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $2 - select local.tee $0 - local.tee $1 + select + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.get $2 + local.get $0 i32.add - local.tee $3 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $0 + local.get $2 local.get $3 + local.get $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $0 if - local.get $1 + local.get $2 i32.const 45 i32.store16 end @@ -65280,7 +65467,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65305,50 +65492,44 @@ i32.const 0 i32.store i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_u - select - local.tee $3 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 $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select - local.tee $1 - local.get $1 - local.get $3 + local.tee $2 + local.get $2 + i32.const 0 i32.gt_s select i32.const 1 i32.shl - local.set $4 - local.get $3 - local.get $1 - local.get $1 - local.get $3 + local.set $3 + i32.const 0 + local.get $2 + local.get $2 + i32.const 0 i32.lt_s select i32.const 1 i32.shl - local.tee $1 - local.get $4 + local.tee $4 + local.get $3 i32.sub - local.tee $3 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -65359,12 +65540,12 @@ return end i32.const 0 - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.eq local.get $4 + i32.eq + local.get $3 select if global.get $~lib/memory/__stack_pointer @@ -65375,16 +65556,16 @@ return end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store local.get $1 local.get $0 - local.get $4 - i32.add local.get $3 + i32.add + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -65553,22 +65734,22 @@ call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - i32.const 9808 local.get $1 + i32.const 9808 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/std/uri.optimized.wat b/tests/compiler/std/uri.optimized.wat index c77e1bd517..26d3543049 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.optimized.wat @@ -793,38 +793,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 20748 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -840,221 +913,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 20748 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1248 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20748 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 1248 - i32.const 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 20748 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 20748 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 1520 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1520 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1250,11 +1248,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1265,15 +1263,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1451,8 +1450,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2834,11 +2833,10 @@ i32.or i32.store offset=2 else - local.get $3 local.get $6 i32.const 65536 i32.lt_u - if + if (result i32) local.get $3 local.get $7 i32.add @@ -2869,6 +2867,9 @@ i32.shl i32.or i32.store offset=2 + local.get $7 + i32.const 6 + i32.add else local.get $3 local.get $7 @@ -2904,12 +2905,12 @@ local.get $7 i32.const 6 i32.add - local.tee $7 - i32.add local.tee $5 + i32.add + local.tee $7 i32.const 37 i32.store16 - local.get $5 + local.get $7 local.get $6 i32.const 12 i32.shr_u @@ -2917,13 +2918,13 @@ i32.and i32.const 128 i32.or - local.tee $5 + local.tee $7 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $5 + local.get $7 i32.const 15 i32.and i32.const 1676 @@ -2933,11 +2934,12 @@ i32.shl i32.or i32.store offset=2 + local.get $5 + i32.const 6 + i32.add end - local.get $7 - i32.const 6 - i32.add local.tee $7 + local.get $3 i32.add local.tee $5 i32.const 37 @@ -2967,11 +2969,11 @@ i32.or i32.store offset=2 end - local.get $3 local.get $7 i32.const 6 i32.add local.tee $7 + local.get $3 i32.add local.tee $5 i32.const 37 @@ -3026,6 +3028,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -3057,50 +3060,50 @@ i32.shr_u i32.ne if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + i32.const 0 + return + end + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -3111,17 +3114,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -3134,7 +3136,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/util/uri/decode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -3633,7 +3637,6 @@ ) (func $start:std/uri (local $0 i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -3700,10 +3703,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 local.get $0 @@ -3730,10 +3732,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1760 i32.store offset=4 local.get $0 @@ -3760,10 +3761,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1792 i32.store offset=4 local.get $0 @@ -3790,10 +3790,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1824 i32.store offset=4 local.get $0 @@ -3820,10 +3819,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1856 i32.store offset=4 local.get $0 @@ -3850,10 +3848,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=4 local.get $0 @@ -3880,10 +3877,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2048 i32.store offset=4 local.get $0 @@ -3950,10 +3946,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2272 i32.store offset=4 local.get $0 @@ -3980,10 +3975,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2336 i32.store offset=4 local.get $0 @@ -4010,10 +4004,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2416 i32.store offset=4 local.get $0 @@ -4040,10 +4033,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2544 i32.store offset=4 local.get $0 @@ -4070,10 +4062,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2688 i32.store offset=4 local.get $0 @@ -4100,10 +4091,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2768 i32.store offset=4 local.get $0 @@ -4130,10 +4120,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2848 i32.store offset=4 local.get $0 @@ -4160,10 +4149,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2960 i32.store offset=4 local.get $0 @@ -4190,10 +4178,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3072 i32.store offset=4 local.get $0 @@ -4220,10 +4207,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3264 i32.store offset=4 local.get $0 @@ -4250,10 +4236,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 local.get $0 @@ -4280,10 +4265,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1760 i32.store offset=4 local.get $0 @@ -4310,10 +4294,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3504 i32.store offset=4 local.get $0 @@ -4340,10 +4323,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1856 i32.store offset=4 local.get $0 @@ -4370,10 +4352,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3584 i32.store offset=4 local.get $0 @@ -4400,10 +4381,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2688 i32.store offset=4 local.get $0 @@ -4430,10 +4410,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2768 i32.store offset=4 local.get $0 @@ -4460,10 +4439,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2960 i32.store offset=4 local.get $0 @@ -4490,10 +4468,9 @@ call $~lib/util/uri/encode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3152 i32.store offset=4 local.get $0 @@ -4520,10 +4497,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 local.get $0 @@ -4550,10 +4526,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1760 i32.store offset=4 local.get $0 @@ -4580,10 +4555,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3680 i32.store offset=4 local.get $0 @@ -4610,10 +4584,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3744 i32.store offset=4 local.get $0 @@ -4640,10 +4613,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3776 i32.store offset=4 local.get $0 @@ -4670,10 +4642,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2736 i32.store offset=4 local.get $0 @@ -4700,10 +4671,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3888 i32.store offset=4 local.get $0 @@ -4730,10 +4700,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3888 i32.store offset=4 local.get $0 @@ -4760,10 +4729,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3152 i32.store offset=4 local.get $0 @@ -4790,10 +4758,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=4 local.get $0 @@ -4820,10 +4787,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 local.get $0 @@ -4850,10 +4816,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1760 i32.store offset=4 local.get $0 @@ -4880,10 +4845,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3648 i32.store offset=4 local.get $0 @@ -4910,10 +4874,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4176 i32.store offset=4 local.get $0 @@ -4940,10 +4903,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4240 i32.store offset=4 local.get $0 @@ -4970,10 +4932,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3776 i32.store offset=4 local.get $0 @@ -5000,10 +4961,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2736 i32.store offset=4 local.get $0 @@ -5030,10 +4990,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 3808 i32.store offset=4 local.get $0 @@ -5060,10 +5019,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=4 local.get $0 @@ -5090,10 +5048,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4272 i32.store offset=4 local.get $0 @@ -5120,10 +5077,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4320 i32.store offset=4 local.get $0 @@ -5150,10 +5106,9 @@ call $~lib/util/uri/decode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4016 i32.store offset=4 local.get $0 @@ -5216,19 +5171,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -5238,22 +5193,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 20748 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -5267,7 +5222,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -5279,7 +5234,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -5287,15 +5242,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -5303,7 +5258,7 @@ else i32.const 4336 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1376 @@ -5313,7 +5268,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 4340 @@ -5331,25 +5286,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index cb404d4a83..3244d03beb 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -686,38 +686,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17868 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -733,221 +806,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17868 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17868 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17868 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17868 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1392 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1045,13 +1043,13 @@ end global.get $~lib/rt/itcms/total local.tee $1 - local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $1 i32.add global.set $~lib/rt/itcms/threshold end @@ -1142,17 +1140,17 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $3 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 - local.get $3 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1161,19 +1159,19 @@ local.get $1 i32.const 32 i32.add - local.tee $3 - local.get $4 + local.tee $4 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $4 i32.const -2 i32.and i32.store @@ -1203,8 +1201,8 @@ i32.load offset=8 local.set $2 local.get $1 - local.get $0 global.get $~lib/rt/itcms/white + local.get $0 i32.or i32.store offset=4 local.get $1 @@ -1268,11 +1266,11 @@ ) (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 4 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1484 i32.lt_s @@ -1357,10 +1355,9 @@ local.get $0 global.set $super-inline/bar global.get $~lib/memory/__stack_pointer - local.tee $0 global.get $super-inline/bar i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1415,19 +1412,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1437,22 +1434,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17868 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1466,7 +1463,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1478,7 +1475,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1486,15 +1483,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1502,7 +1499,7 @@ else i32.const 1440 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1248 @@ -1512,7 +1509,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1444 @@ -1530,25 +1527,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 0df9b0401a..274cd08f73 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -140,6 +140,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -174,47 +175,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -225,17 +226,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -248,7 +248,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/itcms/visitRoots @@ -404,19 +406,17 @@ i32.const 32 i32.and end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end local.set $3 local.get $2 i32.load offset=8 local.set $1 local.get $0 local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 + select i32.or i32.store offset=4 local.get $0 @@ -1028,38 +1028,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 22116 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -1075,221 +1148,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 22116 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 22116 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 22116 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 22116 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1552 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1485,11 +1483,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 + local.set $5 local.get $0 i32.const 16 i32.add - local.tee $3 + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1500,15 +1498,16 @@ call $~lib/builtins/abort unreachable end + local.get $5 i32.const 12 - local.get $3 + local.get $2 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.get $3 + local.get $2 i32.const 12 i32.le_u select @@ -1686,8 +1685,8 @@ i32.load offset=8 local.set $3 local.get $2 - local.get $1 global.get $~lib/rt/itcms/white + local.get $1 i32.or i32.store offset=4 local.get $2 @@ -2887,12 +2886,12 @@ end global.get $~lib/memory/__stack_pointer local.get $1 + local.get $5 i32.const 1180 i32.load i32.const 1 i32.shr_u local.tee $1 - local.get $5 i32.mul i32.add i32.const 1 @@ -3106,25 +3105,25 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $__inlined_func$~lib/util/number/itoa32 (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 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - i32.const 1 - i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + 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 local.get $0 i32.eqz if @@ -3133,6 +3132,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 2032 + local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -3145,7 +3145,6 @@ i32.shr_u local.tee $2 select - local.tee $0 local.tee $1 i32.const 100000 i32.lt_u @@ -3199,15 +3198,15 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 local.get $0 + local.get $1 local.get $3 call $~lib/util/number/utoa32_dec_lut local.get $2 if - local.get $1 + local.get $0 i32.const 45 i32.store16 end @@ -3215,13 +3214,13 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 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 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) (local $8 i32) (local $9 i64) (local $10 i32) @@ -3245,12 +3244,11 @@ i64.sub local.tee $12 i64.and - local.set $6 + local.set $7 local.get $1 local.get $0 i64.shr_u i32.wrap_i64 - local.tee $2 local.tee $5 i32.const 100000 i32.lt_u @@ -3297,9 +3295,9 @@ i32.add end end - local.set $8 + local.set $2 loop $while-continue|0 - local.get $8 + local.get $2 i32.const 0 i32.gt_s if @@ -3315,137 +3313,137 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $8 + 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 $2 + local.get $5 i32.const 1000000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 1000 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 1000 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 100 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 100 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 + local.get $5 i32.const 10 i32.div_u - local.set $5 - local.get $2 + local.set $6 + local.get $5 i32.const 10 i32.rem_u - local.set $2 + local.set $5 br $break|1 end - local.get $2 - local.set $5 + local.get $5 + local.set $6 i32.const 0 - local.set $2 + local.set $5 br $break|1 end i32.const 0 - local.set $5 + local.set $6 end local.get $4 - local.get $5 + local.get $6 i32.or if local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $8 i32.const 1 i32.shl i32.const 3920 i32.add - local.get $5 + local.get $6 i32.const 65535 i32.and i32.const 48 i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 - local.get $6 - local.get $2 + local.set $2 + local.get $7 + local.get $5 i64.extend_i32_u local.get $10 i64.extend_i32_s @@ -3455,11 +3453,11 @@ local.get $3 i64.le_u if - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $8 + local.get $2 i32.const 2 i32.shl i32.const 4848 @@ -3474,9 +3472,9 @@ i32.shl i32.const 3918 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|3 local.get $0 local.get $9 @@ -3494,11 +3492,11 @@ local.get $0 local.get $1 i64.add - local.tee $6 + local.tee $7 local.get $9 i64.sub i64.gt_u - local.get $6 + local.get $7 local.get $9 i64.lt_u i32.or @@ -3506,10 +3504,10 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $1 i64.add @@ -3517,8 +3515,8 @@ br $while-continue|3 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 return @@ -3531,7 +3529,7 @@ i64.const 10 i64.mul local.set $3 - local.get $6 + local.get $7 i64.const 10 i64.mul local.tee $0 @@ -3546,11 +3544,11 @@ i64.ne if local.get $4 - local.tee $2 + local.tee $5 i32.const 1 i32.add local.set $4 - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 3920 @@ -3563,26 +3561,26 @@ i32.add i32.store16 end - local.get $8 + local.get $2 i32.const 1 i32.sub - local.set $8 + local.set $2 local.get $3 local.get $0 local.get $12 i64.and - local.tee $6 + local.tee $7 i64.le_u br_if $while-continue|4 end - local.get $8 + local.get $2 global.get $~lib/util/number/_K i32.add global.set $~lib/util/number/_K - local.get $6 + local.get $7 local.set $0 i32.const 0 - local.get $8 + local.get $2 i32.sub i32.const 2 i32.shl @@ -3597,9 +3595,9 @@ i32.shl i32.const 3918 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $5 + local.set $2 loop $while-continue|6 local.get $0 local.get $1 @@ -3617,22 +3615,22 @@ local.get $0 local.get $11 i64.add - local.tee $6 + local.tee $7 local.get $1 i64.sub i64.gt_u local.get $1 - local.get $6 + local.get $7 i64.gt_u i32.or else i32.const 0 end if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 local.get $0 local.get $11 i64.add @@ -3640,8 +3638,8 @@ br $while-continue|6 end end - local.get $2 local.get $5 + local.get $2 i32.store16 local.get $4 ) @@ -4254,25 +4252,25 @@ (func $~lib/number/F64#toString (param $0 f64) (result i32) (local $1 i32) (local $2 i32) - block $__inlined_func$~lib/util/number/dtoa (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 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - i32.const 1 - i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + 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/dtoa local.get $0 f64.const 0 f64.eq @@ -4282,6 +4280,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3776 + local.set $1 br $__inlined_func$~lib/util/number/dtoa end local.get $0 @@ -4299,6 +4298,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3808 + local.set $1 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -4311,72 +4311,73 @@ f64.const 0 f64.lt select + local.set $1 br $__inlined_func$~lib/util/number/dtoa end local.get $0 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 - i32.const 3920 local.get $1 + i32.const 3920 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 end + 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 22116 + 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 24 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - memory.size - i32.const 16 - i32.shl - i32.const 22116 - 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 24 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s @@ -4791,18 +4792,18 @@ end local.get $2 call $templateliteral/Ref#toString - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=16 local.get $0 call $templateliteral/Ref#toString - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 local.get $1 + i32.store offset=20 local.get $3 + local.get $1 call $~lib/string/String#concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5353,34 +5354,21 @@ global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=12 - i32.const 5620 - local.get $0 - i32.store + i32.const 5616 + i32.const 1 local.get $0 - if - i32.const 5616 - local.get $0 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=12 - i32.const 5628 - local.get $1 - i32.store + i32.const 5616 + i32.const 3 local.get $1 - if - i32.const 5616 - local.get $1 - i32.const 1 - call $byn-split-outlined-A$~lib/rt/itcms/__link - end + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 5616 i32.store offset=12 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=16 i32.const 5616 diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index fc72802671..916ccc9c2e 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -642,11 +642,11 @@ return end global.get $~lib/rt/itcms/iter - local.tee $1 + local.tee $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 -4 @@ -666,19 +666,19 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 18140 i32.lt_u if - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 else global.get $~lib/rt/itcms/total - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -686,7 +686,7 @@ i32.add i32.sub global.set $~lib/rt/itcms/total - local.get $1 + local.get $0 i32.const 4 i32.add local.tee $3 @@ -697,12 +697,12 @@ i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 0 i32.le_s if (result i32) i32.const 1 - local.get $1 + local.get $0 i32.sub memory.grow i32.const 0 @@ -720,11 +720,11 @@ i32.const 0 i32.store loop $for-loop|0 - local.get $0 + local.get $1 i32.const 23 i32.lt_u if - local.get $0 + local.get $1 i32.const 2 i32.shl i32.const 18144 @@ -732,14 +732,14 @@ i32.const 0 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|1 - local.get $1 + local.get $0 i32.const 16 i32.lt_u if - local.get $1 local.get $0 + local.get $1 i32.const 4 i32.shl i32.add @@ -749,17 +749,17 @@ i32.add i32.const 0 i32.store offset=96 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -963,143 +963,145 @@ (func $~start (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 1756 - i32.lt_s - br_if $folding-inner0 + block $__inlined_func$start:throw global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1056 - i32.store - local.get $1 - i32.const 1216 - i32.store offset=8 - local.get $1 i32.const 12 - 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 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1056 - i32.store - loop $while-continue|0 - local.get $0 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1056 + i32.store + local.get $1 + i32.const 1216 + i32.store offset=8 + local.get $1 + i32.const 12 i32.add - local.tee $0 - i32.const 10 + 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 1756 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1056 + i32.store + loop $while-continue|0 local.get $0 + i32.const 1 + i32.add + local.tee $0 i32.const 10 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 1216 + i32.const 1088 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=8 + i32.const 1248 + i32.const 1168 + i32.const 23 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1296 i32.store offset=8 - i32.const 1248 - i32.const 1168 - i32.const 23 - i32.const 7 - call $~lib/builtins/abort - unreachable + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 1296 - i32.store offset=8 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1328 - i32.store offset=12 - local.get $0 - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/pinSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/toSpace - i32.const 1588 - i32.const 1584 - i32.store - i32.const 1592 - i32.const 1584 - i32.store - i32.const 1584 - global.set $~lib/rt/itcms/fromSpace - memory.size - drop - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|07 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1328 + i32.store offset=12 + local.get $0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/toSpace + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + i32.store + i32.const 1584 + global.set $~lib/rt/itcms/fromSpace + memory.size + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|08 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|08 + end + end + end + call $~lib/rt/itcms/step + loop $while-continue|1 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step - br $while-continue|07 + br $while-continue|1 end end + br $__inlined_func$start:throw end - call $~lib/rt/itcms/step - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - br $while-continue|1 - end - end - return + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 18160 - i32.const 18208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -1109,19 +1111,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1131,22 +1133,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 18140 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1160,7 +1162,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1172,7 +1174,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1180,15 +1182,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1196,7 +1198,7 @@ else i32.const 1728 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1488 @@ -1206,7 +1208,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1732 @@ -1224,25 +1226,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 1c629d6406..657bbe6d3a 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -58,6 +58,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.get $1 i32.eq @@ -92,47 +93,47 @@ i32.const 0 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - i32.and - if - loop $do-loop|0 + local.get $0 + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $2 - i64.load + i32.const 8 + i32.add + local.set $2 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.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 loop $while-continue|1 local.get $0 local.tee $3 @@ -143,17 +144,16 @@ if local.get $2 i32.load16_u - local.tee $3 + 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 $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end + br_if $__inlined_func$~lib/util/string/compareImpl local.get $2 i32.const 2 i32.add @@ -166,7 +166,9 @@ end end i32.const 0 + local.set $3 end + local.get $3 i32.eqz ) (func $~lib/rt/itcms/visitRoots @@ -816,38 +818,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 18220 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -863,221 +938,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 18220 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 1424 + i32.const 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18220 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 18220 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 18220 - 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 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and + end + if + i32.const 0 + i32.const 1696 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1585,7 +1585,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1622,13 +1622,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1662,16 +1662,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1724,7 +1724,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1739,7 +1739,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1762,8 +1762,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1776,11 +1776,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1795,7 +1795,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1807,7 +1807,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1820,10 +1820,9 @@ local.get $0 global.set $typeof/c global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 1088 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1088 i32.store offset=4 i32.const 1088 @@ -1935,19 +1934,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1957,22 +1956,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 18220 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1986,7 +1985,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1998,7 +1997,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -2006,15 +2005,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -2022,7 +2021,7 @@ else i32.const 1792 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1552 @@ -2032,7 +2031,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1796 @@ -2050,25 +2049,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 4c946afcb8..b78322598c 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -230,19 +230,19 @@ call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 19 i32.add - local.tee $0 + local.tee $3 i32.const 544106784 i32.store i32.const 1212 i32.load i32.const 1 i32.shr_u - local.set $3 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1216 - local.get $3 local.get $0 + local.get $3 i32.const 4 i32.add local.tee $0 diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 1dd4b8acc5..848be996bd 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -34,9 +34,9 @@ i64.eqz select local.tee $0 - local.get $0 i64.const 33 i64.shr_u + local.get $0 i64.xor i64.const -49064778989728563 i64.mul diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index a28ff852c7..150dbd3589 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -1193,47 +1193,46 @@ i64.shr_u i32.wrap_i64 local.tee $3 - local.tee $6 i32.const 100000 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $6 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $6 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $6 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $6 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $6 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $6 + local.get $3 i32.const 100000000 i32.ge_u i32.add @@ -1420,7 +1419,7 @@ i32.add local.tee $0 i32.load16_u - local.set $6 + local.set $9 loop $while-continue|3 local.get $1 local.get $12 @@ -1450,10 +1449,10 @@ i32.const 0 end if - local.get $6 + local.get $9 i32.const 1 i32.sub - local.set $6 + local.set $9 local.get $1 local.get $2 i64.add @@ -1462,7 +1461,7 @@ end end local.get $0 - local.get $6 + local.get $9 i32.store16 local.get $5 return @@ -1544,7 +1543,7 @@ i32.add local.tee $0 i32.load16_u - local.set $6 + local.set $9 loop $while-continue|6 local.get $1 local.get $2 @@ -1574,10 +1573,10 @@ i32.const 0 end if - local.get $6 + local.get $9 i32.const 1 i32.sub - local.set $6 + local.set $9 local.get $1 local.get $13 i64.add @@ -1586,7 +1585,7 @@ end end local.get $0 - local.get $6 + local.get $9 i32.store16 local.get $5 end @@ -3253,24 +3252,24 @@ (local $9 i32) (local $10 i32) i32.const 1056 - local.set $6 + local.set $7 i32.const 1052 i32.load i32.const 1056 i32.add local.set $8 loop $while-continue|0 - local.get $6 + local.get $7 local.get $8 i32.lt_u if - local.get $6 + local.get $7 i32.load16_u local.tee $9 i32.const 128 i32.lt_u if (result i32) - local.get $7 + local.get $6 i32.const 1 i32.add else @@ -3278,7 +3277,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $7 + local.get $6 i32.const 2 i32.add else @@ -3288,40 +3287,40 @@ i32.const 55296 i32.eq local.get $8 - local.get $6 + local.get $7 i32.const 2 i32.add i32.gt_u i32.and if - local.get $6 + local.get $7 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $7 - i32.const 4 - i32.add - local.set $7 local.get $6 i32.const 4 i32.add local.set $6 + local.get $7 + i32.const 4 + i32.add + local.set $7 br $while-continue|0 end end - local.get $7 + local.get $6 i32.const 3 i32.add end end - local.set $7 - local.get $6 + local.set $6 + local.get $7 i32.const 2 i32.add - local.set $6 + local.set $7 br $while-continue|0 end end @@ -3331,10 +3330,10 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $8 - local.get $7 + local.set $8 + local.get $6 i32.const 56 - local.get $7 + local.get $6 i32.const 56 i32.gt_s select @@ -3351,6 +3350,7 @@ call $~lib/wasi/index/abort unreachable end + local.get $8 i32.const 12 local.get $6 i32.const 19 @@ -3365,7 +3365,7 @@ select local.tee $9 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $7 i32.eqz if memory.size @@ -3430,7 +3430,7 @@ local.get $8 local.get $9 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $7 i32.eqz if i32.const 0 @@ -3441,7 +3441,7 @@ unreachable end end - local.get $6 + local.get $7 i32.load i32.const -4 i32.and @@ -3456,11 +3456,11 @@ unreachable end local.get $8 - local.get $6 + local.get $7 call $~lib/rt/tlsf/removeBlock - local.get $6 + local.get $7 i32.load - local.set $10 + local.set $6 local.get $9 i32.const 4 i32.add @@ -3474,59 +3474,59 @@ call $~lib/wasi/index/abort unreachable end - local.get $10 + local.get $6 i32.const -4 i32.and local.get $9 i32.sub - local.tee $7 + local.tee $10 i32.const 16 i32.ge_u if + local.get $7 local.get $6 - local.get $10 i32.const 2 i32.and local.get $9 i32.or i32.store local.get $9 - local.get $6 + local.get $7 i32.const 4 i32.add i32.add - local.tee $9 - local.get $7 + local.tee $6 + local.get $10 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $8 - local.get $9 + local.get $6 call $~lib/rt/tlsf/insertBlock else + local.get $7 local.get $6 - local.get $10 i32.const -2 i32.and i32.store - local.get $6 + local.get $7 i32.const 4 i32.add - local.get $6 + local.get $7 i32.load i32.const -4 i32.and i32.add - local.tee $7 - local.get $7 + local.tee $6 + local.get $6 i32.load i32.const -3 i32.and i32.store end - local.get $6 + local.get $7 i32.const 4 i32.add local.tee $6 diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index 00bc803084..778cd42c77 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -674,38 +674,111 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - 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 + 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.ne + if + local.get $0 global.set $~lib/rt/itcms/iter - br $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.ne + if + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + 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 17908 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end 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 + loop $while-continue|2 global.get $~lib/rt/itcms/toSpace local.get $0 i32.ne if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $0 i32.load offset=4 i32.const 3 @@ -721,221 +794,146 @@ i32.and 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 - br $folding-inner0 end local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|1 + br $while-continue|2 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/fromSpace + local.set $0 global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + 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 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 17908 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $byn-split-outlined-A$~lib/rt/itcms/__visit - end - 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 - global.get $~lib/rt/itcms/toSpace - local.get $0 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.ne - if - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - 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 - br $folding-inner0 + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + 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 228 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17908 + i32.lt_u if local.get $0 - i32.load offset=4 - local.tee $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 - 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 228 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + 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 17908 - i32.lt_u + 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 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 $2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 17908 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) 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 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + else local.get $2 i32.load i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.and end + if + i32.const 0 + i32.const 1440 + i32.const 559 + 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.const 10 - return end - global.get $~lib/rt/itcms/toSpace - local.tee $0 - local.tee $1 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $0 - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 i32.const 0 - return + global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount + i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -998,314 +996,313 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $folding-inner0 - i32.const 10 - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + i32.const 10 + local.set $0 + loop $while-continue|0 local.get $0 if - i32.const 0 - i32.const 1056 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $10 + i32.const 1 + i32.add + local.set $10 + br $while-continue|0 end + end + local.get $0 + if i32.const 0 - local.set $2 + i32.const 1056 i32.const 10 - local.set $0 - loop $while-continue|00 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - loop $while-continue|1 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 30 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - br $while-continue|00 - end - end + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $10 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $while-continue|01 local.get $0 if - i32.const 0 - i32.const 1056 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 1 - local.set $0 - loop $while-continue|01 local.get $0 - local.tee $1 i32.const 1 i32.sub local.set $0 local.get $1 - if (result i32) - local.get $2 - i32.const 1 - i32.add - local.tee $2 - else + i32.const 1 + i32.add + local.set $1 + loop $while-continue|1 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $11 + i32.const 1 + i32.add + local.set $11 + br $while-continue|1 + end + end + local.get $0 + if i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 30 + i32.const 5 + call $~lib/builtins/abort + unreachable end - br_if $while-continue|01 + br $while-continue|01 end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $0 + loop $while-continue|03 local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.tee $1 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 + i32.sub local.set $0 - loop $while-continue|02 - local.get $0 + local.get $1 + if (result i32) + local.get $9 i32.const 1 i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $while-continue|02 - end - local.get $0 - i32.const 10 - i32.ne - if + local.tee $9 + else i32.const 0 - i32.const 1056 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable end + br_if $while-continue|03 + end + local.get $0 + i32.const -1 + i32.ne + if i32.const 0 - local.set $0 - loop $while-continue|03 (result i32) - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 10 - i32.ne - br_if $while-continue|03 - local.get $0 - end + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $while-continue|05 + local.get $8 + i32.const 1 + i32.add + local.tee $8 i32.const 10 i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + br_if $while-continue|05 + end + local.get $8 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $while-continue|07 + local.get $7 + i32.const 1 + i32.add + local.tee $7 i32.const 10 - local.set $0 - loop $while-continue|04 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|04 - end - end + i32.ne + br_if $while-continue|07 + end + local.get $7 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $while-continue|013 local.get $0 if - i32.const 0 - i32.const 1056 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - i32.const 10 - local.set $2 - loop $while-continue|05 local.get $0 - if - loop $while-continue|16 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|16 - end - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|05 - end + i32.const 1 + i32.sub + local.set $0 + br $while-continue|013 end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + i32.const 10 + local.set $11 + loop $while-continue|015 local.get $0 if - i32.const 0 - i32.const 1056 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if - i32.const 0 - i32.const 1056 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|117 + local.get $11 + if + local.get $11 + i32.const 1 + i32.sub + local.set $11 + br $while-continue|117 + end + end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|015 end - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 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 + end + local.get $0 + if i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $11 + if + i32.const 0 + i32.const 1056 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 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 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1524 i32.lt_s @@ -1316,30 +1313,30 @@ i32.store local.get $0 call $while/Ref#constructor - local.tee $2 + local.tee $0 i32.store - loop $while-continue|06 - local.get $2 + loop $while-continue|08 + local.get $0 if - local.get $1 + local.get $6 i32.const 1 i32.add - local.tee $1 + local.tee $6 i32.const 10 i32.eq if i32.const 0 - local.set $2 + local.set $0 else global.get $~lib/memory/__stack_pointer call $while/Ref#constructor - local.tee $2 + local.tee $0 i32.store end - br $while-continue|06 + br $while-continue|08 end end - local.get $1 + local.get $6 i32.const 10 i32.ne if @@ -1350,7 +1347,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 if i32.const 0 i32.const 1056 @@ -1363,8 +1360,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1379,28 +1374,28 @@ i32.store local.get $0 call $while/Ref#constructor - local.tee $2 + local.tee $0 i32.store - loop $while-continue|08 + loop $while-continue|012 call $while/Ref#constructor if - block $while-break|09 - local.get $1 + block $while-break|011 + local.get $5 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 10 i32.eq if i32.const 0 - local.set $2 - br $while-break|09 + local.set $0 + br $while-break|011 end - br $while-continue|08 + br $while-continue|012 end end end - local.get $1 + local.get $5 i32.const 10 i32.ne if @@ -1411,7 +1406,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 if i32.const 0 i32.const 1056 @@ -1424,40 +1419,34 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - loop $while-continue|07 - local.get $0 + loop $while-continue|019 + local.get $3 i32.const 1 i32.add - local.tee $0 + local.tee $3 i32.const 0 i32.le_s - br_if $while-continue|07 + br_if $while-continue|019 end - i32.const 0 - local.set $0 - loop $while-continue|09 - local.get $0 + loop $while-continue|021 + local.get $2 i32.const 1 i32.add - local.tee $0 + local.tee $2 i32.const 0 i32.le_s - br_if $while-continue|09 + br_if $while-continue|021 end - i32.const 0 - local.set $0 loop $do-loop|0 - local.get $0 + local.get $4 i32.const 1 i32.add - local.tee $0 + local.tee $4 i32.const 3 i32.lt_s br_if $do-loop|0 end - local.get $0 + local.get $4 i32.const 3 i32.ne if @@ -1472,23 +1461,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|011 + loop $while-continue|023 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|011 + br $while-continue|023 end end end call $~lib/rt/itcms/step drop - loop $while-continue|112 + loop $while-continue|125 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|112 + br $while-continue|125 end end global.get $~lib/rt/itcms/total @@ -1564,7 +1553,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1601,13 +1590,13 @@ end global.get $~lib/rt/itcms/total local.tee $0 - local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $0 i32.add global.set $~lib/rt/itcms/threshold end @@ -1641,16 +1630,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $1 local.get $0 - local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1703,7 +1692,7 @@ i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $1 i32.const 16 i32.ge_u if @@ -1718,7 +1707,7 @@ i32.const 32 i32.add local.tee $4 - local.get $2 + local.get $1 i32.const 4 i32.sub i32.const 1 @@ -1741,8 +1730,8 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1755,11 +1744,11 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $1 i32.load offset=8 local.set $3 local.get $0 - local.get $2 + local.get $1 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 @@ -1774,7 +1763,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1786,7 +1775,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $1 + local.get $2 local.get $0 i32.const 20 i32.add @@ -1806,19 +1795,19 @@ local.get $0 i32.const 20 i32.sub - local.tee $1 + local.tee $0 i32.load offset=4 i32.const 3 i32.and i32.eq if global.get $~lib/rt/itcms/iter - local.get $1 + local.get $0 i32.eq if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 @@ -1828,22 +1817,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 - local.get $1 + local.get $0 i32.load offset=4 i32.const -4 i32.and - local.tee $0 + local.tee $1 i32.eqz if i32.const 0 - local.get $1 + local.get $0 i32.const 17908 i32.lt_u - local.get $1 + local.get $0 i32.load offset=8 select i32.eqz @@ -1857,7 +1846,7 @@ end br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.eqz @@ -1869,7 +1858,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.store offset=8 local.get $2 @@ -1877,15 +1866,15 @@ i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 end global.get $~lib/rt/itcms/toSpace local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $0 + local.tee $1 i32.const 1 i32.le_u if (result i32) @@ -1893,7 +1882,7 @@ else i32.const 1488 i32.load - local.get $0 + local.get $1 i32.lt_u if i32.const 1296 @@ -1903,7 +1892,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 1492 @@ -1921,25 +1910,25 @@ local.set $3 local.get $2 i32.load offset=8 - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $2 local.get $3 i32.or i32.store offset=4 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount i32.const 1 From 85da1a5937d52b30ae2f36bd85f6589db7dcc07f Mon Sep 17 00:00:00 2001 From: Max Graey Date: Sun, 7 Nov 2021 20:10:53 +0200 Subject: [PATCH 10/19] Expose new ASC_RUNTIME compiletime constant. Avoid mem cleanups in std containers for Incremental Runtime (#2122) --- cli/asc.js | 8 +- src/common.ts | 3 +- src/compiler.ts | 3 + src/index.ts | 6 +- src/program.ts | 2 + std/assembly/array.ts | 11 +- std/assembly/arraybuffer.ts | 9 +- std/assembly/index.d.ts | 2 + std/assembly/shared/runtime.ts | 11 + std/assembly/staticarray.ts | 5 +- std/portable/index.d.ts | 2 + std/portable/index.js | 1 + tests/compiler/NonNullable.untouched.wat | 3 + tests/compiler/asc-constants.ts | 1 + tests/compiler/asc-constants.untouched.wat | 3 + tests/compiler/assert-nonnull.optimized.wat | 6 +- tests/compiler/assert-nonnull.untouched.wat | 9 +- tests/compiler/builtins.untouched.wat | 3 + tests/compiler/call-super.untouched.wat | 3 + tests/compiler/class-implements.untouched.wat | 3 + .../class-overloading-cast.untouched.wat | 3 + .../compiler/class-overloading.untouched.wat | 3 + tests/compiler/class.optimized.wat | 413 ++-- tests/compiler/class.untouched.wat | 14 +- tests/compiler/constructor.untouched.wat | 3 + tests/compiler/do.untouched.wat | 3 + .../empty-exportruntime.untouched.wat | 3 + tests/compiler/empty-new.untouched.wat | 3 + tests/compiler/exports.untouched.wat | 3 + .../exportstar-rereexport.untouched.wat | 3 + .../extends-baseaggregate.optimized.wat | 496 +++-- .../extends-baseaggregate.untouched.wat | 18 +- .../compiler/extends-recursive.untouched.wat | 3 + .../field-initialization.optimized.wat | 413 ++-- .../field-initialization.untouched.wat | 14 +- tests/compiler/field.untouched.wat | 3 + tests/compiler/for.untouched.wat | 3 + tests/compiler/function-call.untouched.wat | 3 + .../function-expression.untouched.wat | 3 + tests/compiler/getter-call.untouched.wat | 3 + .../implicit-getter-setter.untouched.wat | 3 + tests/compiler/infer-array.optimized.wat | 2 +- tests/compiler/infer-array.untouched.wat | 21 +- tests/compiler/infer-generic.untouched.wat | 3 + tests/compiler/inlining.untouched.wat | 3 + tests/compiler/instanceof-class.untouched.wat | 3 + tests/compiler/issues/1095.untouched.wat | 3 + tests/compiler/issues/1225.untouched.wat | 3 + tests/compiler/issues/1699.optimized.wat | 479 +++-- tests/compiler/issues/1699.untouched.wat | 34 +- tests/compiler/logical.untouched.wat | 3 + tests/compiler/managed-cast.untouched.wat | 3 + tests/compiler/new.untouched.wat | 3 + tests/compiler/number.untouched.wat | 3 + tests/compiler/object-literal.untouched.wat | 3 + .../optional-typeparameters.untouched.wat | 3 + tests/compiler/reexport.untouched.wat | 3 + tests/compiler/rereexport.untouched.wat | 3 + tests/compiler/resolve-access.optimized.wat | 2 +- tests/compiler/resolve-access.untouched.wat | 5 +- tests/compiler/resolve-binary.untouched.wat | 3 + .../resolve-elementaccess.optimized.wat | 423 ++--- .../resolve-elementaccess.untouched.wat | 14 +- .../resolve-function-expression.untouched.wat | 3 + tests/compiler/resolve-nested.untouched.wat | 3 + tests/compiler/resolve-new.untouched.wat | 3 + .../resolve-propertyaccess.untouched.wat | 3 + tests/compiler/resolve-ternary.untouched.wat | 3 + tests/compiler/resolve-unary.untouched.wat | 3 + tests/compiler/rt/finalize.untouched.wat | 3 + tests/compiler/rt/flags.untouched.wat | 3 + tests/compiler/rt/ids.untouched.wat | 3 + tests/compiler/rt/instanceof.untouched.wat | 3 + .../runtime-incremental-export.untouched.wat | 3 + tests/compiler/std-wasi/console.optimized.wat | 336 ++-- tests/compiler/std-wasi/console.untouched.wat | 14 +- tests/compiler/std-wasi/crypto.optimized.wat | 336 ++-- tests/compiler/std-wasi/crypto.untouched.wat | 24 +- tests/compiler/std-wasi/process.optimized.wat | 356 ++-- tests/compiler/std-wasi/process.untouched.wat | 44 +- tests/compiler/std/array-access.optimized.wat | 6 +- tests/compiler/std/array-access.untouched.wat | 17 +- .../compiler/std/array-literal.optimized.wat | 4 +- .../compiler/std/array-literal.untouched.wat | 7 +- tests/compiler/std/array.optimized.wat | 1043 +++++----- tests/compiler/std/array.untouched.wat | 176 +- tests/compiler/std/arraybuffer.optimized.wat | 418 ++-- tests/compiler/std/arraybuffer.untouched.wat | 24 +- tests/compiler/std/dataview.optimized.wat | 413 ++-- tests/compiler/std/dataview.untouched.wat | 14 +- tests/compiler/std/date.optimized.wat | 466 +++-- tests/compiler/std/date.untouched.wat | 22 +- tests/compiler/std/hash.untouched.wat | 3 + tests/compiler/std/map.optimized.wat | 770 ++++---- tests/compiler/std/map.untouched.wat | 168 +- tests/compiler/std/new.untouched.wat | 3 + tests/compiler/std/object.untouched.wat | 3 + .../std/operator-overloading.untouched.wat | 3 + tests/compiler/std/set.optimized.wat | 784 ++++---- tests/compiler/std/set.untouched.wat | 168 +- tests/compiler/std/static-array.optimized.wat | 428 ++--- tests/compiler/std/static-array.untouched.wat | 34 +- tests/compiler/std/staticarray.optimized.wat | 1688 ++++++++--------- tests/compiler/std/staticarray.untouched.wat | 42 +- .../std/string-casemapping.untouched.wat | 3 + .../std/string-encoding.untouched.wat | 3 + tests/compiler/std/string.optimized.wat | 454 +++-- tests/compiler/std/string.untouched.wat | 22 +- tests/compiler/std/symbol.optimized.wat | 418 ++-- tests/compiler/std/symbol.untouched.wat | 14 +- tests/compiler/std/typedarray.optimized.wat | 21 +- tests/compiler/std/typedarray.untouched.wat | 28 +- tests/compiler/std/uri.untouched.wat | 3 + tests/compiler/super-inline.untouched.wat | 3 + tests/compiler/templateliteral.untouched.wat | 3 + tests/compiler/throw.untouched.wat | 3 + tests/compiler/typeof.untouched.wat | 3 + tests/compiler/wasi/abort.untouched.wat | 3 + tests/compiler/wasi/trace.untouched.wat | 3 + tests/compiler/while.untouched.wat | 3 + 120 files changed, 5672 insertions(+), 5691 deletions(-) create mode 100644 std/assembly/shared/runtime.ts diff --git a/cli/asc.js b/cli/asc.js index 6796f10866..2fbec18afd 100644 --- a/cli/asc.js +++ b/cli/asc.js @@ -426,9 +426,15 @@ exports.main = function main(argv, options, callback) { } // Set up options - var program; + var program, runtime; const compilerOptions = __pin(assemblyscript.newOptions()); + switch (opts.runtime) { + case "stub": runtime = 0; break; + case "minimal": runtime = 1; break; + default: runtime = 2; break; + } assemblyscript.setTarget(compilerOptions, 0); + assemblyscript.setRuntime(compilerOptions, runtime); assemblyscript.setNoAssert(compilerOptions, opts.noAssert); assemblyscript.setExportMemory(compilerOptions, !opts.noExportMemory); assemblyscript.setImportMemory(compilerOptions, opts.importMemory); diff --git a/src/common.ts b/src/common.ts index 54ccd742b2..10ef6265de 100644 --- a/src/common.ts +++ b/src/common.ts @@ -158,7 +158,7 @@ export namespace CommonNames { export const constructor = "constructor"; // constants export const ASC_TARGET = "ASC_TARGET"; - export const ASC_NO_TREESHAKING = "ASC_NO_TREESHAKING"; + export const ASC_RUNTIME = "ASC_RUNTIME"; export const ASC_NO_ASSERT = "ASC_NO_ASSERT"; export const ASC_MEMORY_BASE = "ASC_MEMORY_BASE"; export const ASC_TABLE_BASE = "ASC_TABLE_BASE"; @@ -256,4 +256,5 @@ export namespace CommonNames { // shared export { Feature, featureToString } from "../std/assembly/shared/feature"; export { Target } from "../std/assembly/shared/target"; +export { Runtime } from "../std/assembly/shared/runtime"; export { Typeinfo, TypeinfoFlags } from "../std/assembly/shared/typeinfo"; diff --git a/src/compiler.ts b/src/compiler.ts index 9ad5925ab3..a4c10db782 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -64,6 +64,7 @@ import { CommonNames, Feature, Target, + Runtime, featureToString } from "./common"; @@ -212,6 +213,8 @@ export class Options { /** WebAssembly target. Defaults to {@link Target.WASM32}. */ target: Target = Target.WASM32; + /** Runtime type. Defaults to Incremental GC. */ + runtime: Runtime = Runtime.Incremental; /** If true, replaces assertions with nops. */ noAssert: bool = false; /** It true, exports the memory to the embedder. */ diff --git a/src/index.ts b/src/index.ts index 526444eade..560ca8fd5c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,7 +33,7 @@ * When compiling to WebAssembly `glue/wasm/index.ts` must be included. */ -import { Target, Feature } from "./common"; +import { Target, Runtime, Feature } from "./common"; import { Compiler, Options } from "./compiler"; import { IDLBuilder, TSDBuilder } from "./definitions"; import { DiagnosticMessage, DiagnosticCategory, formatDiagnosticMessage } from "./diagnostics"; @@ -52,6 +52,10 @@ export function setTarget(options: Options, target: Target): void { options.target = target; } +export function setRuntime(options: Options, runtime: Runtime): void { + options.runtime = runtime; +} + /** Sets the `noAssert` option. */ export function setNoAssert(options: Options, noAssert: bool): void { options.noAssert = noAssert; diff --git a/src/program.ts b/src/program.ts index 7fa8f417d0..8df389b4b4 100644 --- a/src/program.ts +++ b/src/program.ts @@ -1013,6 +1013,8 @@ export class Program extends DiagnosticEmitter { // register compiler hints this.registerConstantInteger(CommonNames.ASC_TARGET, Type.i32, i64_new(options.isWasm64 ? Target.WASM64 : Target.WASM32)); + this.registerConstantInteger(CommonNames.ASC_RUNTIME, Type.i32, + i64_new(options.runtime)); this.registerConstantInteger(CommonNames.ASC_NO_ASSERT, Type.bool, i64_new(options.noAssert ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_MEMORY_BASE, Type.i32, diff --git a/std/assembly/array.ts b/std/assembly/array.ts index b373436a61..9bcdacdf12 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -1,6 +1,7 @@ /// import { BLOCK_MAXSIZE } from "./rt/common"; +import { Runtime } from "shared/runtime"; import { COMPARATOR, SORT } from "./util/sort"; import { REVERSE } from "./util/bytes"; import { joinBooleanArray, joinIntegerArray, joinFloatArray, joinStringArray, joinReferenceArray } from "./util/string"; @@ -22,7 +23,11 @@ function ensureCapacity(array: usize, newSize: usize, alignLog2: u32, canGrow: b let newCapacity = max(newSize, MIN_SIZE) << alignLog2; if (canGrow) newCapacity = max(min(oldCapacity << 1, BLOCK_MAXSIZE), newCapacity); let newData = __renew(oldData, newCapacity); - memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity); + // __new / __renew already init memory range as zeros in Incremental runtime. + // So try to avoid this. + if (ASC_RUNTIME != Runtime.Incremental) { + memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity); + } if (newData !== oldData) { // oldData has been free'd store(array, newData, offsetof("buffer")); store(array, newData, offsetof("dataStart")); @@ -66,7 +71,9 @@ export class Array { // reserve capacity for at least MIN_SIZE elements var bufferSize = max(length, MIN_SIZE) << alignof(); var buffer = changetype(__new(bufferSize, idof())); - memory.fill(changetype(buffer), 0, bufferSize); + if (ASC_RUNTIME != Runtime.Incremental) { + memory.fill(changetype(buffer), 0, bufferSize); + } this.buffer = buffer; // links this.dataStart = changetype(buffer); this.byteLength = bufferSize; diff --git a/std/assembly/arraybuffer.ts b/std/assembly/arraybuffer.ts index d1173c9799..18479ade6c 100644 --- a/std/assembly/arraybuffer.ts +++ b/std/assembly/arraybuffer.ts @@ -1,6 +1,7 @@ /// import { OBJECT, BLOCK_MAXSIZE, TOTAL_OVERHEAD } from "./rt/common"; +import { Runtime } from "shared/runtime"; import { idof } from "./builtins"; import { E_INVALIDLENGTH } from "./util/error"; @@ -17,7 +18,9 @@ export abstract class ArrayBufferView { protected constructor(length: i32, alignLog2: i32) { if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH); var buffer = changetype(__new(length = length << alignLog2, idof())); - memory.fill(changetype(buffer), 0, length); + if (ASC_RUNTIME != Runtime.Incremental) { + memory.fill(changetype(buffer), 0, length); + } this.buffer = buffer; // links this.dataStart = changetype(buffer); this.byteLength = length; @@ -48,7 +51,9 @@ export abstract class ArrayBufferView { constructor(length: i32) { if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH); var buffer = changetype(__new(length, idof())); - memory.fill(changetype(buffer), 0, length); + if (ASC_RUNTIME != Runtime.Incremental) { + memory.fill(changetype(buffer), 0, length); + } return buffer; } diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 1f093996e7..14a808bea5 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -52,6 +52,8 @@ declare type dataref = object | null; /** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */ declare const ASC_TARGET: i32; +/** Runtime type. 0 = Stub, 1 = Minimal, 2 = Incremental. */ +declare const ASC_RUNTIME: i32; /** Provided noAssert option. */ declare const ASC_NO_ASSERT: bool; /** Provided memoryBase option. */ diff --git a/std/assembly/shared/runtime.ts b/std/assembly/shared/runtime.ts new file mode 100644 index 0000000000..4092e20961 --- /dev/null +++ b/std/assembly/shared/runtime.ts @@ -0,0 +1,11 @@ +// This file is shared with the compiler and must remain portable + +/** Runtime types. */ +export enum Runtime { + /** Simple bump allocator without GC. */ + Stub = 0, + /** Stop the world semi-automatic GC. */ + Minimal = 1, + /** incremental GC. */ + Incremental = 2, +} diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index e08009ee3c..f242c7147f 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -1,6 +1,7 @@ /// import { OBJECT, BLOCK_MAXSIZE, TOTAL_OVERHEAD } from "./rt/common"; +import { Runtime } from "shared/runtime"; import { COMPARATOR, SORT } from "./util/sort"; import { REVERSE } from "./util/bytes"; import { idof } from "./builtins"; @@ -90,7 +91,9 @@ export class StaticArray { if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH); var outSize = length << alignof(); var out = changetype>(__new(outSize, idof>())); - memory.fill(changetype(out), 0, outSize); + if (ASC_RUNTIME != Runtime.Incremental) { + memory.fill(changetype(out), 0, outSize); + } return out; } diff --git a/std/portable/index.d.ts b/std/portable/index.d.ts index d7114e9140..6b09b77cee 100644 --- a/std/portable/index.d.ts +++ b/std/portable/index.d.ts @@ -35,6 +35,8 @@ declare type valueof = T[0]; /** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */ declare const ASC_TARGET: i32; +/** Runtime type. 0 = Stub, 1 = Minimal, 2 = Incremental. */ +declare const ASC_RUNTIME: i32; /** Provided noAssert option. */ declare const ASC_NO_ASSERT: bool; /** Provided memoryBase option. */ diff --git a/std/portable/index.js b/std/portable/index.js index 2400d61746..01165dd358 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -4,6 +4,7 @@ var globalScope = typeof window !== "undefined" && window || typeof global !== " if (typeof globalScope.ASC_TARGET === "undefined") { globalScope.ASC_TARGET = 0; // Target.JS + globalScope.ASC_RUNTIME = 0; // Runtime.Stub globalScope.ASC_NO_ASSERT = false; globalScope.ASC_MEMORY_BASE = 0; globalScope.ASC_OPTIMIZE_LEVEL = 3; diff --git a/tests/compiler/NonNullable.untouched.wat b/tests/compiler/NonNullable.untouched.wat index ddf742b16d..5678a98ff6 100644 --- a/tests/compiler/NonNullable.untouched.wat +++ b/tests/compiler/NonNullable.untouched.wat @@ -6,6 +6,9 @@ (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $NonNullable/z (mut i32) (i32.const 224)) (global $~lib/memory/__data_end i32 (i32.const 300)) diff --git a/tests/compiler/asc-constants.ts b/tests/compiler/asc-constants.ts index 0614110be0..34716332ba 100644 --- a/tests/compiler/asc-constants.ts +++ b/tests/compiler/asc-constants.ts @@ -1,4 +1,5 @@ ASC_TARGET; +ASC_RUNTIME; ASC_NO_ASSERT; ASC_MEMORY_BASE; ASC_OPTIMIZE_LEVEL; diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat index 0fc4903e56..be45b662f8 100644 --- a/tests/compiler/asc-constants.untouched.wat +++ b/tests/compiler/asc-constants.untouched.wat @@ -1,6 +1,7 @@ (module (type $none_=>_none (func)) (global $~lib/ASC_TARGET i32 (i32.const 1)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) (global $~lib/ASC_MEMORY_BASE i32 (i32.const 0)) (global $~lib/ASC_OPTIMIZE_LEVEL i32 (i32.const 0)) @@ -28,6 +29,8 @@ (func $start:asc-constants i32.const 1 drop + i32.const 2 + drop i32.const 0 drop i32.const 0 diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index a40dd66179..ded72ad821 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -55,7 +55,7 @@ if i32.const 1184 i32.const 1248 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -261,7 +261,7 @@ if i32.const 1184 i32.const 1248 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -277,7 +277,7 @@ if i32.const 1296 i32.const 1248 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 54d53ba3f5..62c0a38401 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -5,6 +5,9 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 380)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) @@ -310,7 +313,7 @@ if i32.const 160 i32.const 224 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -335,7 +338,7 @@ if i32.const 272 i32.const 224 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -366,7 +369,7 @@ if i32.const 160 i32.const 224 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index d999b82b85..ff642e6620 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -21,6 +21,9 @@ (global $builtins/s (mut i32) (i32.const 0)) (global $builtins/fn (mut i32) (i32.const 144)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index c5905141bf..446526b584 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index 20b4df005b..104af54d85 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/class-overloading-cast.untouched.wat b/tests/compiler/class-overloading-cast.untouched.wat index 19a34533b6..c3df550ffc 100644 --- a/tests/compiler/class-overloading-cast.untouched.wat +++ b/tests/compiler/class-overloading-cast.untouched.wat @@ -19,6 +19,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 2facadbbcd..73b3ed7326 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -19,6 +19,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 0439ea3151..c395b16052 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -1201,182 +1201,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1445,7 +1269,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1460,7 +1284,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1473,7 +1297,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1481,7 +1305,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1492,16 +1316,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1512,16 +1336,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1529,7 +1353,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1537,8 +1361,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1555,7 +1379,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1565,13 +1389,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1584,40 +1408,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1677,10 +1501,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $class/testGenericInitializer (local $0 i32) @@ -1741,9 +1737,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/memory/memory.fill local.get $2 local.get $0 i32.store diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index ddea6b07eb..6fda41c809 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -20,10 +20,14 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 512)) (global $~lib/memory/__data_end i32 (i32.const 564)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16948)) @@ -2721,7 +2725,7 @@ if i32.const 432 i32.const 480 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -2743,10 +2747,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 89a0c648ba..2a90aead9b 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 7320a8c2e2..5780fd01a8 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -18,6 +18,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/empty-exportruntime.untouched.wat b/tests/compiler/empty-exportruntime.untouched.wat index 1d8dc9fe14..6cfe1e0434 100644 --- a/tests/compiler/empty-exportruntime.untouched.wat +++ b/tests/compiler/empty-exportruntime.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.untouched.wat index 0cbc855010..7d67affc28 100644 --- a/tests/compiler/empty-new.untouched.wat +++ b/tests/compiler/empty-new.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index e7b3081595..6e2f615cd1 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -27,6 +27,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index 3e97865cd4..b1e2bafc65 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -23,6 +23,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 19933ed0f0..b33d051df5 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1207,182 +1207,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1451,7 +1275,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1466,7 +1290,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1479,7 +1303,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1487,7 +1311,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1498,16 +1322,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1518,16 +1342,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1535,7 +1359,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1543,8 +1367,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1561,7 +1385,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1571,13 +1395,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1590,40 +1414,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1683,10 +1507,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2381,16 +2377,15 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) i32.const 1180 i32.load - local.tee $10 + local.tee $7 i32.const 1 i32.add local.tee $8 i32.const 1176 i32.load - local.tee $9 + local.tee $1 i32.const 2 i32.shr_u i32.gt_u @@ -2401,13 +2396,13 @@ if i32.const 1616 i32.const 1664 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $9 + local.get $1 i32.const 1 i32.shl local.tee $1 @@ -2430,10 +2425,10 @@ local.get $2 i32.gt_u select - local.tee $7 + local.tee $9 i32.const 1168 i32.load - local.tee $11 + local.tee $6 local.tee $1 i32.const 20 i32.sub @@ -2446,25 +2441,25 @@ i32.le_u if local.get $3 - local.get $7 + local.get $9 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $7 + local.get $9 local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $5 local.set $2 - local.get $7 + local.get $9 local.get $3 i32.load offset=16 local.tee $3 local.get $3 - local.get $7 + local.get $9 i32.gt_u select - local.set $6 + local.set $10 block $~lib/util/memory/memmove|inlined.0 local.get $1 local.get $2 @@ -2473,10 +2468,10 @@ local.get $1 local.get $2 i32.sub - local.get $6 + local.get $10 i32.sub i32.const 0 - local.get $6 + local.get $10 i32.const 1 i32.shl i32.sub @@ -2484,7 +2479,7 @@ if local.get $2 local.get $1 - local.get $6 + local.get $10 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -2505,13 +2500,13 @@ i32.const 7 i32.and if - local.get $6 + local.get $10 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 + local.get $10 i32.const 1 i32.sub - local.set $6 + local.set $10 local.get $2 local.tee $3 i32.const 1 @@ -2530,7 +2525,7 @@ end end loop $while-continue|1 - local.get $6 + local.get $10 i32.const 8 i32.ge_u if @@ -2538,10 +2533,10 @@ local.get $1 i64.load i64.store - local.get $6 + local.get $10 i32.const 8 i32.sub - local.set $6 + local.set $10 local.get $2 i32.const 8 i32.add @@ -2555,7 +2550,7 @@ end end loop $while-continue|2 - local.get $6 + local.get $10 if local.get $2 local.tee $3 @@ -2571,10 +2566,10 @@ local.get $4 i32.load8_u i32.store8 - local.get $6 + local.get $10 i32.const 1 i32.sub - local.set $6 + local.set $10 br $while-continue|2 end end @@ -2589,22 +2584,22 @@ if loop $while-continue|3 local.get $2 - local.get $6 + local.get $10 i32.add i32.const 7 i32.and if - local.get $6 + local.get $10 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 + local.get $10 i32.const 1 i32.sub - local.tee $6 + local.tee $10 local.get $2 i32.add local.get $1 - local.get $6 + local.get $10 i32.add i32.load8_u i32.store8 @@ -2612,18 +2607,18 @@ end end loop $while-continue|4 - local.get $6 + local.get $10 i32.const 8 i32.ge_u if - local.get $6 + local.get $10 i32.const 8 i32.sub - local.tee $6 + local.tee $10 local.get $2 i32.add local.get $1 - local.get $6 + local.get $10 i32.add i64.load i64.store @@ -2632,16 +2627,16 @@ end end loop $while-continue|5 - local.get $6 + local.get $10 if - local.get $6 + local.get $10 i32.const 1 i32.sub - local.tee $6 + local.tee $10 local.get $2 i32.add local.get $1 - local.get $6 + local.get $10 i32.add i32.load8_u i32.store8 @@ -2654,14 +2649,7 @@ local.set $1 end local.get $1 - local.get $9 - i32.add - local.get $7 - local.get $9 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $11 + local.get $6 i32.ne if i32.const 1168 @@ -2678,12 +2666,12 @@ end end i32.const 1176 - local.get $7 + local.get $9 i32.store end i32.const 1172 i32.load - local.get $10 + local.get $7 i32.const 2 i32.shl i32.add diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 09f205cc84..ee79fbfd3c 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -20,10 +20,14 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 672)) (global $~lib/memory/__data_end i32 (i32.const 748)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) @@ -3758,7 +3762,7 @@ if i32.const 592 i32.const 640 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3802,14 +3806,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index f66a3affff..886d35c1f8 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 32d67a3f0b..964b83e93f 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -1214,182 +1214,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1458,7 +1282,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1473,7 +1297,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1486,7 +1310,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1494,7 +1318,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1505,16 +1329,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1525,16 +1349,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1542,7 +1366,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1550,8 +1374,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1568,7 +1392,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1578,13 +1402,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1597,40 +1421,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1690,10 +1514,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3145,9 +3141,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store - local.get $0 - i32.const 0 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 061989af79..90140e0342 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -18,10 +18,14 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 768)) (global $~lib/memory/__data_end i32 (i32.const 972)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17356)) @@ -3953,7 +3957,7 @@ if i32.const 512 i32.const 560 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -3964,10 +3968,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/field.untouched.wat b/tests/compiler/field.untouched.wat index 3c9951bf50..652bf1f8b0 100644 --- a/tests/compiler/field.untouched.wat +++ b/tests/compiler/field.untouched.wat @@ -18,6 +18,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index a533f2a6cd..274cf8f80a 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -18,6 +18,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index b82907c3b2..27b2cc8679 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -23,6 +23,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index e42698f3cb..b190999976 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -24,6 +24,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 691f91bf28..3fa9b41b61 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 846ece1d20..4bdc62a2b0 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index 2159ac4362..8ee55c5d7f 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -2691,7 +2691,7 @@ end i32.const 1280 i32.const 1488 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index a7a74136c7..a39653b6f5 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -12,6 +12,9 @@ (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -3705,7 +3708,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3731,7 +3734,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3757,7 +3760,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3783,7 +3786,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3825,7 +3828,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4601,7 +4604,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4647,7 +4650,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4693,7 +4696,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4718,7 +4721,7 @@ if i32.const 976 i32.const 464 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index b7cf289aa2..9363d0ea8b 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -13,6 +13,9 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $infer-generic/arr i32 (i32.const 128)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 19773dbe73..591305f56b 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -19,6 +19,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index 26f3db7e58..5bfcc1c5e8 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 758618249b..0d031c6765 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index 95d7aa20ca..c422ca0438 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index efa79642c3..3049127451 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -2,8 +2,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1203,182 +1203,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1447,7 +1271,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1462,7 +1286,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1475,7 +1299,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1483,7 +1307,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1494,16 +1318,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1514,16 +1338,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1531,7 +1355,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1539,8 +1363,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1557,7 +1381,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1567,13 +1391,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1586,40 +1410,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1679,10 +1503,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2375,7 +2371,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $0 i32.load offset=12 local.get $1 @@ -2387,7 +2382,7 @@ if i32.const 1344 i32.const 1104 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -2398,7 +2393,7 @@ local.tee $3 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $4 i32.const 2 i32.shr_u i32.gt_u @@ -2409,13 +2404,13 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $9 + local.get $4 i32.const 1 i32.shl local.tee $4 @@ -2438,10 +2433,10 @@ local.get $4 i32.lt_u select - local.tee $11 + local.tee $10 local.get $0 i32.load - local.tee $10 + local.tee $9 local.tee $3 i32.const 20 i32.sub @@ -2454,21 +2449,21 @@ i32.le_u if local.get $4 - local.get $11 + local.get $10 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $11 + local.get $10 local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new local.set $5 - local.get $11 + local.get $10 local.get $4 i32.load offset=16 local.tee $4 local.get $4 - local.get $11 + local.get $10 i32.gt_u select local.set $8 @@ -2663,13 +2658,6 @@ end local.get $3 local.get $9 - i32.add - local.get $11 - local.get $9 - i32.sub - call $~lib/memory/memory.fill - local.get $3 - local.get $10 i32.ne if local.get $0 @@ -2687,7 +2675,7 @@ end end local.get $0 - local.get $11 + local.get $10 i32.store offset=8 end local.get $0 @@ -2830,13 +2818,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -2872,9 +2860,6 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 32 - call $~lib/memory/memory.fill local.get $2 local.get $3 i32.store @@ -2898,52 +2883,52 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $2 i32.store call $issues/1699/MultiAssignmentTest#constructor - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 local.get $2 i32.const 1 - local.get $0 + local.get $1 call $~lib/array/Array#__set local.get $2 i32.const 1 call $~lib/array/Array#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 local.get $2 i32.const 0 - local.get $0 + local.get $1 call $~lib/array/Array#__set loop $for-loop|0 local.get $2 i32.load offset=12 - local.get $1 + local.get $0 i32.gt_s if global.get $~lib/memory/__stack_pointer call $issues/1699/MultiAssignmentTest#constructor - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $1 + local.get $0 i32.const 1 i32.gt_s if local.get $2 - local.get $1 local.get $0 + local.get $1 call $~lib/array/Array#__set end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -3053,7 +3038,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3073,7 +3058,7 @@ if i32.const 1552 i32.const 1104 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index cc83e450b9..24e10aaea1 100644 --- a/tests/compiler/issues/1699.untouched.wat +++ b/tests/compiler/issues/1699.untouched.wat @@ -9,6 +9,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -21,6 +24,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 688)) (global $~lib/memory/__data_end i32 (i32.const 732)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17116)) @@ -3763,7 +3767,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3807,14 +3811,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -3863,7 +3863,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4191,7 +4191,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -4213,10 +4213,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -4286,7 +4286,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4311,7 +4311,7 @@ if i32.const 528 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index f5d48e94c7..344c415077 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -22,6 +22,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index b68dcba200..40b0f68c6f 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index 3a46f640eb..2531a2b11b 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -18,6 +18,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index a44c71d806..6549064b26 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -27,6 +27,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 4c1f6cb3db..588fdabe2c 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -16,6 +16,9 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index e08253e6a4..05136ca9de 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -18,6 +18,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 27af8da6f0..5ed6191586 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -27,6 +27,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index a893c1756c..30c35df4bc 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -23,6 +23,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 7274d46239..9618845565 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -3100,7 +3100,7 @@ if i32.const 1280 i32.const 1488 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index fcf2f3dc68..53636d9820 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -16,6 +16,9 @@ (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -3705,7 +3708,7 @@ if i32.const 256 i32.const 464 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index d434e75855..e6b550cff1 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -18,6 +18,9 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $resolve-binary/a (mut i32) (i32.const 0)) (global $resolve-binary/f (mut f64) (f64.const 0)) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index dbe6daa73a..21542a973f 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1266,182 +1266,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1510,7 +1334,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1525,7 +1349,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1538,7 +1362,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1546,7 +1370,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1557,16 +1381,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1577,16 +1401,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1594,7 +1418,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1602,8 +1426,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1620,7 +1444,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1630,13 +1454,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1649,40 +1473,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1742,10 +1566,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 @@ -4673,7 +4669,7 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -4682,14 +4678,11 @@ i32.const 2 local.get $1 i32.shl - local.tee $4 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - local.get $4 - call $~lib/memory/memory.fill local.get $0 local.get $3 i32.store @@ -4709,7 +4702,7 @@ local.get $3 i32.const 20 i32.sub - local.tee $1 + local.tee $4 i32.load offset=4 i32.const 3 i32.and @@ -4726,7 +4719,7 @@ i32.eqz i32.eq if - local.get $1 + local.get $4 call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state @@ -4737,7 +4730,7 @@ i32.eq i32.and if - local.get $1 + local.get $4 call $~lib/rt/itcms/Object#makeGray end end @@ -4747,7 +4740,7 @@ local.get $3 i32.store offset=4 local.get $0 - local.get $4 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 0a67fc5010..981941dc8a 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -19,6 +19,9 @@ (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -31,6 +34,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $resolve-elementaccess/arr (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -6158,7 +6162,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -6172,10 +6176,10 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $3 call $~lib/arraybuffer/ArrayBufferView#set:buffer diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index fa7aaca340..d2d5582ab5 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -22,6 +22,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index fe5299cb7b..2b9a974028 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -33,6 +33,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 3ec3effe0f..c8804fbdba 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index ca9881fdd1..1204319f7b 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -22,6 +22,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 922eca36b6..32b79fd5ae 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -26,6 +26,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 921930f130..0d48fb1030 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -21,6 +21,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index fe37c5c7c1..9f65c5f3fd 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -19,6 +19,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.untouched.wat index e832460e28..dfbcb4e8d8 100644 --- a/tests/compiler/rt/flags.untouched.wat +++ b/tests/compiler/rt/flags.untouched.wat @@ -4,6 +4,9 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $rt/flags/VALUE_ALIGN_REF i32 (i32.const 256)) (global $rt/flags/KEY_ALIGN_REF i32 (i32.const 131072)) (global $~lib/rt/__rtti_base i32 (i32.const 176)) diff --git a/tests/compiler/rt/ids.untouched.wat b/tests/compiler/rt/ids.untouched.wat index e0aa4ac445..776c7e5789 100644 --- a/tests/compiler/rt/ids.untouched.wat +++ b/tests/compiler/rt/ids.untouched.wat @@ -1,5 +1,8 @@ (module (type $none_=>_none (func)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/memory/__data_end i32 (i32.const 8)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) (global $~lib/memory/__heap_base i32 (i32.const 16392)) diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index d6ceab0b6b..04e2819d55 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/rt/runtime-incremental-export.untouched.wat b/tests/compiler/rt/runtime-incremental-export.untouched.wat index 1d8dc9fe14..6cfe1e0434 100644 --- a/tests/compiler/rt/runtime-incremental-export.untouched.wat +++ b/tests/compiler/rt/runtime-incremental-export.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index ef10ca6f24..8e81148436 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -2594,296 +2594,292 @@ end i32.const 0 ) - (func $~lib/memory/memory.fill (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.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 4400 + i32.const 4992 + i32.const 260 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-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 + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $2 + 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 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + 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 $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $0 i32.add - local.tee $2 + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $2 + local.tee $3 i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 4400 - i32.const 4992 - i32.const 260 - i32.const 31 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-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 - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $2 - 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 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 $0 - call $~lib/memory/memory.fill - local.get $1 ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) @@ -4715,7 +4711,6 @@ global.set $~lib/memory/__stack_pointer ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4740,7 +4735,7 @@ if i32.const 5264 i32.const 5312 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/wasi/index/abort unreachable @@ -4749,16 +4744,13 @@ local.get $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $0 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index 55d8738139..03dfa64e06 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -23,6 +23,9 @@ (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) (global $~lib/process/process.stderr i32 (i32.const 2)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/bindings/wasi/tempbuf i32 (i32.const 112)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -38,6 +41,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/console/timers (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 6912)) @@ -6124,7 +6128,7 @@ if i32.const 4240 i32.const 4288 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/wasi/index/abort unreachable @@ -6135,10 +6139,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index 4c09233d1f..37ff5828c0 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -2029,296 +2029,292 @@ end local.get $1 ) - (func $~lib/memory/memory.fill (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.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 260 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-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 + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $2 + 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 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + 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 $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $0 i32.add - local.tee $2 + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $2 + local.tee $3 i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1280 - i32.const 1344 - i32.const 260 - i32.const 31 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-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 - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $2 - 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 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 $0 - call $~lib/memory/memory.fill - local.get $1 ) (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) block $break|0 @@ -4526,9 +4522,6 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - local.get $1 - i32.const 8 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -4921,7 +4914,7 @@ if i32.const 1168 i32.const 1216 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/wasi/index/abort unreachable @@ -4932,9 +4925,6 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $6 - local.get $5 - call $~lib/memory/memory.fill local.get $1 local.get $6 i32.store diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index e475f22c07..fdf616ac4a 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -16,6 +16,9 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -29,6 +32,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $std-wasi/crypto/ab (mut i32) (i32.const 0)) (global $std-wasi/crypto/buf (mut i32) (i32.const 0)) (global $~lib/process/process.stdout i32 (i32.const 1)) @@ -6166,7 +6170,7 @@ if i32.const 144 i32.const 192 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/wasi/index/abort unreachable @@ -6177,10 +6181,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer @@ -6855,7 +6859,7 @@ if i32.const 144 i32.const 192 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/wasi/index/abort unreachable @@ -6869,10 +6873,10 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $3 call $~lib/arraybuffer/ArrayBufferView#set:buffer diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index dba70f0262..7177cdaa28 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -2610,296 +2610,292 @@ end i32.const 0 ) - (func $~lib/memory/memory.fill (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.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 4352 + i32.const 4656 + i32.const 260 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-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 + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $2 + 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 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + 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 $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $0 i32.add - local.tee $2 + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $2 + local.tee $3 i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 4352 - i32.const 4656 - i32.const 260 - i32.const 31 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-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 - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $2 - 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 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 $0 - call $~lib/memory/memory.fill - local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3829,7 +3825,7 @@ if i32.const 4560 i32.const 4608 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/wasi/index/abort unreachable @@ -3868,13 +3864,6 @@ local.get $1 call $~lib/rt/itcms/__renew local.tee $2 - local.get $3 - i32.add - local.get $1 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $2 local.get $4 i32.ne if @@ -3910,7 +3899,7 @@ if i32.const 4784 i32.const 4608 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/wasi/index/abort unreachable @@ -5842,7 +5831,7 @@ if i32.const 4560 i32.const 4608 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/wasi/index/abort unreachable @@ -5861,9 +5850,6 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - local.get $2 - call $~lib/memory/memory.fill local.get $1 local.get $3 i32.store @@ -6127,7 +6113,7 @@ if i32.const 4784 i32.const 4608 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/wasi/index/abort unreachable @@ -6147,7 +6133,7 @@ if i32.const 4976 i32.const 4608 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/wasi/index/abort unreachable @@ -6159,7 +6145,6 @@ local.get $0 ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -6184,7 +6169,7 @@ if i32.const 4560 i32.const 5104 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/wasi/index/abort unreachable @@ -6193,16 +6178,13 @@ local.get $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $0 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index 4ea7f0c17f..6d800d22f5 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -25,6 +25,9 @@ (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_read" (func $~lib/bindings/wasi_snapshot_preview1/fd_read (param i32 i32 i32 i32) (result i32))) (global $~lib/process/process.stdout i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/bindings/wasi/tempbuf i32 (i32.const 64)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -41,6 +44,7 @@ (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/process/process.argv (mut i32) (i32.const 0)) (global $std-wasi/process/argv (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) @@ -5318,7 +5322,7 @@ if i32.const 3536 i32.const 3584 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/wasi/index/abort unreachable @@ -5362,14 +5366,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -5418,7 +5418,7 @@ if i32.const 3760 i32.const 3584 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/wasi/index/abort unreachable @@ -7745,7 +7745,7 @@ if i32.const 3536 i32.const 3584 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/wasi/index/abort unreachable @@ -7767,10 +7767,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array<~lib/string/String>#set:buffer @@ -8172,7 +8172,7 @@ if i32.const 3760 i32.const 3584 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/wasi/index/abort unreachable @@ -8197,7 +8197,7 @@ if i32.const 3952 i32.const 3584 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/wasi/index/abort unreachable @@ -8227,7 +8227,7 @@ if i32.const 3536 i32.const 4080 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/wasi/index/abort unreachable @@ -8238,10 +8238,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index c4daf0c5b8..5b528c7bc8 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -143,7 +143,7 @@ if i32.const 1056 i32.const 1120 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -163,7 +163,7 @@ if i32.const 1168 i32.const 1120 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -214,7 +214,7 @@ if i32.const 1056 i32.const 1120 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 39bd1eda85..7b8ca0eb92 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -6,6 +6,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 284)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16668)) @@ -32,7 +35,7 @@ if i32.const 32 i32.const 96 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -400,7 +403,7 @@ if i32.const 32 i32.const 96 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -425,7 +428,7 @@ if i32.const 144 i32.const 96 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -456,7 +459,7 @@ if i32.const 32 i32.const 96 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -481,7 +484,7 @@ if i32.const 144 i32.const 96 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -512,7 +515,7 @@ if i32.const 32 i32.const 96 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -537,7 +540,7 @@ if i32.const 144 i32.const 96 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index bf651869e7..5318c29a7e 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -63,7 +63,7 @@ if i32.const 1200 i32.const 1264 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -82,7 +82,7 @@ if i32.const 1200 i32.const 1264 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 29d006913b..613b5d27e7 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -11,6 +11,9 @@ (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/array-literal/staticArrayI8 i32 (i32.const 64)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $std/array-literal/staticArrayI32 i32 (i32.const 320)) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 400)) (global $std/array-literal/i (mut i32) (i32.const 0)) @@ -69,7 +72,7 @@ if i32.const 176 i32.const 240 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -99,7 +102,7 @@ if i32.const 176 i32.const 240 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 4830d40836..b4442e9acb 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -3353,7 +3353,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3417,7 +3417,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3478,7 +3478,6 @@ (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 i32.load offset=8 local.tee $5 @@ -3495,7 +3494,7 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3538,7 +3537,7 @@ local.tee $1 i32.const 20 i32.sub - local.tee $6 + local.tee $5 i32.load i32.const -4 i32.and @@ -3546,19 +3545,19 @@ i32.sub i32.le_u if - local.get $6 + local.get $5 local.get $2 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end local.get $2 - local.get $6 + local.get $5 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $3 local.get $1 local.get $2 - local.get $6 + local.get $5 i32.load offset=16 local.tee $1 local.get $1 @@ -3570,14 +3569,6 @@ local.set $1 end local.get $1 - local.get $5 - i32.add - i32.const 0 - local.get $2 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $1 local.get $4 i32.ne if @@ -3634,7 +3625,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3658,7 +3649,7 @@ if i32.const 2176 i32.const 1104 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -3712,7 +3703,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -4156,7 +4147,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4182,7 +4173,7 @@ if i32.const 1344 i32.const 1104 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4434,7 +4425,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6299,7 +6290,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -8814,7 +8805,7 @@ if i32.const 1344 i32.const 1104 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -14465,70 +14456,70 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i64.const 0 i64.store offset=16 - local.get $1 + local.get $0 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i64.const 0 i64.store offset=32 - local.get $1 + local.get $0 i64.const 0 i64.store offset=40 - local.get $1 + local.get $0 i64.const 0 i64.store offset=48 - local.get $1 + local.get $0 i64.const 0 i64.store offset=56 - local.get $1 + local.get $0 i64.const 0 i64.store offset=64 - local.get $1 + local.get $0 i64.const 0 i64.store offset=72 - local.get $1 + local.get $0 i64.const 0 i64.store offset=80 - local.get $1 + local.get $0 i64.const 0 i64.store offset=88 - local.get $1 + local.get $0 i64.const 0 i64.store offset=96 - local.get $1 + local.get $0 i64.const 0 i64.store offset=104 - local.get $1 + local.get $0 i64.const 0 i64.store offset=112 - local.get $1 + local.get $0 i64.const 0 i64.store offset=120 - local.get $1 + local.get $0 i64.const 0 i64.store offset=128 - local.get $1 + local.get $0 i64.const 0 i64.store offset=136 - local.get $1 + local.get $0 i64.const 0 i64.store offset=144 - local.get $1 + local.get $0 i64.const 0 i64.store offset=152 - local.get $1 + local.get $0 i64.const 0 i64.store offset=160 - local.get $1 + local.get $0 i32.const 0 i32.store offset=168 memory.size @@ -14568,9 +14559,9 @@ global.set $std/array/arr i32.const 0 call $std/array/Ref#constructor - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -14581,10 +14572,10 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new @@ -14627,10 +14618,6 @@ call $~lib/rt/itcms/__new local.tee $65 i32.store offset=4 - local.get $65 - i32.const 0 - i32.const 1 - call $~lib/memory/memory.fill local.get $2 local.get $65 i32.store @@ -14665,9 +14652,9 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -14683,9 +14670,9 @@ i32.const 6 i32.const 1696 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 1 i32.const 1 i32.const 3 @@ -14700,7 +14687,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 call $std/array/isArraysEqual i32.eqz @@ -14712,7 +14699,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 0 i32.const 2147483647 @@ -14727,7 +14714,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 call $std/array/isArraysEqual i32.eqz @@ -14739,7 +14726,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 0 i32.const -3 @@ -14754,7 +14741,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 call $std/array/isArraysEqual i32.eqz @@ -14766,7 +14753,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 i32.const -2 i32.const 2147483647 @@ -14781,7 +14768,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 call $std/array/isArraysEqual i32.eqz @@ -14793,7 +14780,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 1 i32.const 0 @@ -14808,7 +14795,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 call $std/array/isArraysEqual i32.eqz @@ -14826,13 +14813,13 @@ i32.const 7 i32.const 1888 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=12 - local.get $1 + local.get $0 i32.load offset=4 local.set $65 i32.const 1 - local.get $1 + local.get $0 i32.load offset=12 local.tee $66 local.get $66 @@ -14875,7 +14862,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 call $std/array/isArraysEqual i32.eqz @@ -14887,7 +14874,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 local.tee $2 i32.load offset=4 local.set $65 @@ -14899,23 +14886,23 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $for-loop|01 - local.get $1 + local.get $0 local.get $66 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $65 i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|01 end end @@ -14924,12 +14911,12 @@ i32.const 7 i32.const 1984 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 local.get $2 - local.get $1 + local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -14951,7 +14938,7 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 local.get $66 i32.const 3 i32.sub @@ -14963,21 +14950,21 @@ select local.set $66 loop $for-loop|03 - local.get $1 + local.get $0 local.get $66 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $65 i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|03 end end @@ -14986,12 +14973,12 @@ i32.const 7 i32.const 2032 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 local.get $2 - local.get $1 + local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15010,29 +14997,29 @@ local.tee $66 i32.const 2 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $for-loop|05 - local.get $1 + local.get $0 local.get $66 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $65 i32.add i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|05 end end @@ -15041,12 +15028,12 @@ i32.const 7 i32.const 2080 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 local.get $2 - local.get $1 + local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15068,7 +15055,7 @@ i32.const 1 i32.gt_s select - local.set $1 + local.set $0 i32.const 0 local.get $66 local.get $66 @@ -15077,21 +15064,21 @@ select local.set $66 loop $for-loop|07 - local.get $1 + local.get $0 local.get $66 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $65 i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|07 end end @@ -15100,12 +15087,12 @@ i32.const 7 i32.const 2128 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 local.get $2 - local.get $1 + local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15118,9 +15105,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -15132,9 +15119,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15148,17 +15135,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 42 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -15173,9 +15160,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 1 i32.ne @@ -15189,9 +15176,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15205,9 +15192,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#pop i32.const 42 i32.ne @@ -15221,9 +15208,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -15235,9 +15222,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15251,17 +15238,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 43 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 1 i32.ne @@ -15275,9 +15262,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15291,9 +15278,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15308,17 +15295,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 44 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 2 i32.ne @@ -15332,9 +15319,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15348,9 +15335,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15365,9 +15352,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -15382,17 +15369,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 45 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 3 i32.ne @@ -15406,9 +15393,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15422,9 +15409,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -15439,9 +15426,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -15456,9 +15443,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -15472,7 +15459,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 2 i32.const 2 i32.const 8 @@ -15494,7 +15481,7 @@ i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $0 local.get $2 i32.store offset=16 local.get $2 @@ -15521,9 +15508,9 @@ i32.const 3 i32.const 2224 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#at i32.const 1 @@ -15536,7 +15523,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 3 call $~lib/array/Array#at i32.const 4 @@ -15549,7 +15536,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const -1 call $~lib/array/Array#at i32.const 4 @@ -15562,7 +15549,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const -4 call $~lib/array/Array#at i32.const 1 @@ -15578,7 +15565,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $1 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr @@ -15586,7 +15573,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $2 - local.get $1 + local.get $0 call $~lib/array/Array#concat local.tee $2 i32.store offset=16 @@ -15702,11 +15689,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 46 call $~lib/array/Array#push drop - local.get $1 + local.get $0 i32.const 47 call $~lib/array/Array#push drop @@ -15717,7 +15704,7 @@ i32.store local.get $2 local.get $65 - local.get $1 + local.get $0 call $~lib/array/Array#concat local.tee $2 i32.store offset=16 @@ -15737,7 +15724,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=12 i32.const 2 i32.ne @@ -15847,9 +15834,9 @@ i32.const 3 i32.const 2304 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -15865,7 +15852,7 @@ local.tee $65 i32.store offset=8 local.get $2 - local.get $1 + local.get $0 local.get $65 call $~lib/array/Array#concat local.tee $2 @@ -15882,7 +15869,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -15898,16 +15885,16 @@ i32.const 3 i32.const 2336 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -15918,7 +15905,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -15937,16 +15924,16 @@ i32.const 3 i32.const 2432 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -15957,7 +15944,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -15976,16 +15963,16 @@ i32.const 3 i32.const 2528 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -15996,7 +15983,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16015,16 +16002,16 @@ i32.const 3 i32.const 2624 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16035,7 +16022,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16054,16 +16041,16 @@ i32.const 3 i32.const 2720 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16074,7 +16061,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16093,16 +16080,16 @@ i32.const 3 i32.const 2816 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16113,7 +16100,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16132,16 +16119,16 @@ i32.const 3 i32.const 2912 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16152,7 +16139,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16171,16 +16158,16 @@ i32.const 3 i32.const 3008 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16191,7 +16178,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16210,16 +16197,16 @@ i32.const 3 i32.const 3104 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16230,7 +16217,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16249,16 +16236,16 @@ i32.const 3 i32.const 3200 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16269,7 +16256,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16288,16 +16275,16 @@ i32.const 3 i32.const 3296 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16308,7 +16295,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16327,16 +16314,16 @@ i32.const 3 i32.const 3392 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const -4 i32.const -3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 @@ -16347,7 +16334,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 - local.get $1 + local.get $0 local.get $2 i32.const 0 call $std/array/isArraysEqual @@ -16362,17 +16349,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 42 call $~lib/array/Array#unshift drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 4 i32.ne @@ -16386,9 +16373,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16402,9 +16389,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -16419,9 +16406,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16436,9 +16423,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16453,9 +16440,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -16470,17 +16457,17 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 41 call $~lib/array/Array#unshift drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 5 i32.ne @@ -16494,9 +16481,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16510,9 +16497,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -16527,9 +16514,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -16544,9 +16531,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -16561,9 +16548,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -16578,9 +16565,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -16595,9 +16582,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 local.tee $2 i32.const 0 @@ -16605,12 +16592,12 @@ if i32.const 2176 i32.const 1104 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 local.tee $65 i32.load @@ -16631,7 +16618,7 @@ i32.add i32.const 0 i32.store - local.get $1 + local.get $0 local.get $2 i32.store offset=12 global.set $std/array/i @@ -16648,9 +16635,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 4 i32.ne @@ -16664,9 +16651,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16680,9 +16667,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -16697,9 +16684,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16714,9 +16701,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16731,9 +16718,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -16748,9 +16735,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -16766,9 +16753,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 i32.const 3 i32.ne @@ -16782,9 +16769,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16798,9 +16785,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -16815,9 +16802,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -16832,9 +16819,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -16853,10 +16840,10 @@ i32.const 3 i32.const 3488 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 i32.const 2147483647 call $~lib/array/Array#slice @@ -16885,7 +16872,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 i32.const 4 call $~lib/array/Array#slice @@ -16914,7 +16901,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 5 call $~lib/array/Array#slice @@ -16943,14 +16930,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#slice local.tee $2 i32.store offset=16 local.get $2 - local.get $1 + local.get $0 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16963,7 +16950,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#slice @@ -16992,7 +16979,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 i32.const -1 call $~lib/array/Array#slice @@ -17021,7 +17008,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const -3 i32.const -1 call $~lib/array/Array#slice @@ -17049,7 +17036,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const -1 i32.const -3 call $~lib/array/Array#slice @@ -17067,15 +17054,15 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.const 2147483647 call $~lib/array/Array#slice - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -17087,31 +17074,31 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=4 local.set $2 - local.get $1 + local.get $0 i32.load offset=12 - local.tee $1 + local.tee $0 i32.const 1 i32.gt_u if - local.get $1 + local.get $0 i32.const 1 i32.shr_u local.set $65 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 loop $while-continue|0 - local.get $0 + local.get $1 local.get $65 i32.lt_u if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 @@ -17120,8 +17107,8 @@ i32.load local.set $67 local.get $66 - local.get $1 local.get $0 + local.get $1 i32.sub i32.const 2 i32.shl @@ -17133,10 +17120,10 @@ local.get $66 local.get $67 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end @@ -17564,10 +17551,10 @@ local.set $1 loop $while-continue|013 local.get $2 - local.get $9 + local.get $3 i32.gt_s if - local.get $9 + local.get $3 local.tee $0 i32.const 2 i32.shl @@ -17580,7 +17567,7 @@ local.get $0 i32.const 1 i32.add - local.set $9 + local.set $3 br $while-continue|013 end end @@ -17619,10 +17606,10 @@ local.set $1 loop $while-continue|041 local.get $2 - local.get $8 + local.get $9 i32.gt_s if - local.get $8 + local.get $9 local.tee $0 i32.const 2 i32.shl @@ -17635,7 +17622,7 @@ local.get $0 i32.const 1 i32.add - local.set $8 + local.set $9 br $while-continue|041 end end @@ -17676,10 +17663,10 @@ local.set $1 loop $while-continue|044 local.get $2 - local.get $7 + local.get $8 i32.gt_s if - local.get $7 + local.get $8 local.tee $0 i32.const 2 i32.shl @@ -17692,7 +17679,7 @@ local.get $0 i32.const 1 i32.add - local.set $7 + local.set $8 br $while-continue|044 end end @@ -17723,11 +17710,11 @@ block $__inlined_func$~lib/array/Array#indexOf45 local.get $0 i32.load offset=12 - local.tee $7 + local.tee $3 i32.const 100 i32.le_s i32.const 1 - local.get $7 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf45 local.get $0 @@ -17735,7 +17722,7 @@ local.set $0 loop $while-continue|047 local.get $2 - local.get $7 + local.get $3 i32.lt_s if local.get $2 @@ -17990,10 +17977,10 @@ local.set $1 loop $while-continue|059 local.get $2 - local.get $6 + local.get $7 i32.gt_s if - local.get $6 + local.get $7 local.tee $0 i32.const 2 i32.shl @@ -18006,7 +17993,7 @@ local.get $0 i32.const 1 i32.add - local.set $6 + local.set $7 br $while-continue|059 end end @@ -18037,11 +18024,11 @@ block $__inlined_func$~lib/array/Array#indexOf60 local.get $0 i32.load offset=12 - local.tee $6 + local.tee $3 i32.const 1 i32.le_s i32.const 1 - local.get $6 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf60 local.get $0 @@ -18049,7 +18036,7 @@ local.set $0 loop $while-continue|062 local.get $2 - local.get $6 + local.get $3 i32.lt_s if local.get $2 @@ -18096,11 +18083,11 @@ block $__inlined_func$~lib/array/Array#indexOf63 local.get $0 i32.load offset=12 - local.tee $6 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $6 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf63 local.get $0 @@ -18108,7 +18095,7 @@ local.set $0 loop $while-continue|065 local.get $2 - local.get $6 + local.get $3 i32.lt_s if local.get $2 @@ -18170,10 +18157,10 @@ local.set $0 loop $while-continue|067 local.get $2 - local.get $5 + local.get $6 i32.gt_s if - local.get $5 + local.get $6 local.tee $1 i32.const 2 i32.shl @@ -18186,7 +18173,7 @@ local.get $1 i32.const 1 i32.add - local.set $5 + local.set $6 br $while-continue|067 end end @@ -18230,10 +18217,10 @@ local.set $0 loop $while-continue|069 local.get $2 - local.get $4 + local.get $5 i32.gt_s if - local.get $4 + local.get $5 local.tee $1 i32.const 3 i32.shl @@ -18246,7 +18233,7 @@ local.get $1 i32.const 1 i32.add - local.set $4 + local.set $5 br $while-continue|069 end end @@ -18276,26 +18263,26 @@ global.set $~argumentsLength local.get $2 i32.load offset=12 - local.tee $1 - local.set $4 + local.tee $0 + local.set $1 i32.const -1 - local.set $0 + local.set $3 block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $1 + local.get $0 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.get $0 local.get $1 - local.get $4 i32.add - local.get $1 + local.get $0 i32.const 1 i32.sub - local.get $4 local.get $1 - local.get $4 + local.get $0 + local.get $1 i32.le_s select - local.get $4 + local.get $1 i32.const 0 i32.lt_s select @@ -18309,6 +18296,7 @@ i32.ge_s if local.get $0 + local.tee $3 i32.const 2 i32.shl local.get $1 @@ -18317,7 +18305,7 @@ i32.const 2 i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 + local.get $3 i32.const 1 i32.sub local.set $0 @@ -18325,9 +18313,9 @@ end end i32.const -1 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.const 3 i32.ne if @@ -18342,26 +18330,26 @@ global.set $~argumentsLength local.get $2 i32.load offset=12 - local.tee $1 - local.set $4 + local.tee $0 + local.set $1 i32.const -1 - local.set $0 + local.set $3 block $__inlined_func$~lib/array/Array#lastIndexOf6 - local.get $1 + local.get $0 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf6 + local.get $0 local.get $1 - local.get $4 i32.add - local.get $1 + local.get $0 i32.const 1 i32.sub - local.get $4 local.get $1 - local.get $4 + local.get $0 + local.get $1 i32.le_s select - local.get $4 + local.get $1 i32.const 0 i32.lt_s select @@ -18375,6 +18363,7 @@ i32.ge_s if local.get $0 + local.tee $3 i32.const 2 i32.shl local.get $1 @@ -18383,7 +18372,7 @@ i32.const 7 i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf6 - local.get $0 + local.get $3 i32.const 1 i32.sub local.set $0 @@ -18391,9 +18380,9 @@ end end i32.const -1 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.const -1 i32.ne if @@ -18623,11 +18612,11 @@ block $__inlined_func$~lib/array/Array#indexOf9 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf9 local.get $2 @@ -18635,7 +18624,7 @@ local.set $2 loop $while-continue|010 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -18680,11 +18669,11 @@ block $__inlined_func$~lib/array/Array#indexOf12 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf12 local.get $2 @@ -18692,7 +18681,7 @@ local.set $2 loop $while-continue|014 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -18737,11 +18726,11 @@ block $__inlined_func$~lib/array/Array#indexOf16 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf16 local.get $2 @@ -18749,7 +18738,7 @@ local.set $2 loop $while-continue|017 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -18794,11 +18783,11 @@ block $__inlined_func$~lib/array/Array#indexOf19 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const 100 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf19 local.get $2 @@ -18806,7 +18795,7 @@ local.set $2 loop $while-continue|020 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -18849,14 +18838,14 @@ block $__inlined_func$~lib/array/Array#indexOf22 local.get $1 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf22 - local.get $4 + local.get $3 i32.const 100 i32.sub local.tee $0 @@ -18871,7 +18860,7 @@ local.set $1 loop $while-continue|023 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 @@ -18914,14 +18903,14 @@ block $__inlined_func$~lib/array/Array#indexOf25 local.get $1 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const -2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf25 - local.get $4 + local.get $3 i32.const 2 i32.sub local.tee $0 @@ -18936,7 +18925,7 @@ local.set $1 loop $while-continue|026 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 @@ -18979,14 +18968,14 @@ block $__inlined_func$~lib/array/Array#indexOf28 local.get $1 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const -4 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf28 - local.get $4 + local.get $3 i32.const 4 i32.sub local.tee $0 @@ -19001,7 +18990,7 @@ local.set $1 loop $while-continue|029 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 @@ -19046,11 +19035,11 @@ block $__inlined_func$~lib/array/Array#indexOf31 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf31 local.get $2 @@ -19058,7 +19047,7 @@ local.set $2 loop $while-continue|032 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -19103,11 +19092,11 @@ block $__inlined_func$~lib/array/Array#indexOf34 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const 1 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf34 local.get $2 @@ -19115,7 +19104,7 @@ local.set $2 loop $while-continue|035 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -19160,11 +19149,11 @@ block $__inlined_func$~lib/array/Array#indexOf37 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select br_if $__inlined_func$~lib/array/Array#indexOf37 local.get $2 @@ -19172,7 +19161,7 @@ local.set $2 loop $while-continue|038 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -20468,15 +20457,15 @@ i32.const 0 local.get $1 i32.load offset=12 - local.tee $4 - local.get $4 + local.tee $3 + local.get $3 i32.const 0 i32.gt_s select local.set $5 local.get $2 i32.const 1 - local.get $4 + local.get $3 local.get $5 i32.sub local.tee $2 @@ -20511,7 +20500,7 @@ i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $2 local.get $5 i32.add @@ -20524,7 +20513,7 @@ i32.shl local.get $7 i32.add - local.get $4 + local.get $3 local.get $5 i32.sub i32.const 2 @@ -20532,7 +20521,7 @@ call $~lib/memory/memory.copy end local.get $1 - local.get $4 + local.get $3 local.get $2 i32.sub i32.store offset=12 @@ -22524,9 +22513,9 @@ i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.load offset=4 local.set $5 loop $for-loop|0197 @@ -22573,9 +22562,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=12 - local.get $4 + local.get $3 i32.load offset=12 i32.const 4 i32.ne @@ -22587,7 +22576,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const 0 call $~lib/array/Array#__get local.set $12 @@ -23008,9 +22997,9 @@ local.get $2 local.get $1 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select local.get $37 @@ -23023,11 +23012,11 @@ i32.shl i32.add i32.load - local.set $4 + local.set $3 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $3 local.get $37 local.get $1 i32.const 7280 @@ -23485,14 +23474,14 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $3 i32.store local.get $0 i32.const 7504 i32.store offset=8 i32.const 4 local.set $1 - local.get $4 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -23502,7 +23491,7 @@ i32.const 0 i32.ge_s if - local.get $4 + local.get $3 i32.load offset=4 local.get $2 i32.const 2 @@ -23515,7 +23504,7 @@ local.get $1 local.get $0 local.get $2 - local.get $4 + local.get $3 i32.const 7504 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24642,7 +24631,7 @@ i32.const 3 i32.const 8688 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24727,9 +24716,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 call $std/array/assertSortedDefault - local.get $4 + local.get $3 local.get $5 i32.const 0 call $std/array/isArraysEqual @@ -24843,14 +24832,14 @@ i32.const 0 local.get $2 i32.load offset=12 - local.tee $4 - local.get $4 + local.tee $3 + local.get $3 i32.const 0 i32.gt_s select local.set $5 local.get $0 - local.get $4 + local.get $3 local.get $5 i32.sub local.tee $0 @@ -24859,7 +24848,7 @@ i32.const 0 i32.gt_s select - local.tee $4 + local.tee $3 i32.const 2 i32.const 20 i32.const 0 @@ -24876,12 +24865,12 @@ i32.shl i32.add local.set $2 - local.get $4 + local.get $3 i32.const 2 i32.shl - local.set $4 + local.set $3 loop $while-continue|00 - local.get $4 + local.get $3 local.get $64 i32.gt_u if @@ -25089,24 +25078,20 @@ i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 32 - call $~lib/memory/memory.fill local.get $2 - local.get $4 + local.get $3 i32.store - local.get $4 + local.get $3 if local.get $2 - local.get $4 + local.get $3 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $2 - local.get $4 + local.get $3 i32.store offset=4 local.get $2 i32.const 32 @@ -25209,24 +25194,20 @@ i32.const 2048 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 2048 - call $~lib/memory/memory.fill local.get $2 - local.get $4 + local.get $3 i32.store - local.get $4 + local.get $3 if local.get $2 - local.get $4 + local.get $3 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $2 - local.get $4 + local.get $3 i32.store offset=4 local.get $2 i32.const 2048 @@ -25382,10 +25363,10 @@ local.set $1 local.get $0 i32.load offset=12 - local.set $4 + local.set $3 loop $for-loop|048 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -25496,9 +25477,9 @@ local.get $0 local.get $30 call $~lib/array/Array#__get - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store local.get $2 local.get $30 @@ -25507,7 +25488,7 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 - local.get $4 + local.get $3 local.get $5 call $~lib/string/String.__eq i32.eqz @@ -25542,7 +25523,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -25700,7 +25681,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 local.get $5 i32.store offset=156 i32.const 1 @@ -25759,7 +25740,7 @@ local.set $61 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $1 i32.load offset=12 local.set $1 @@ -25795,7 +25776,7 @@ if i32.const 9456 i32.const 9488 - local.get $4 + local.get $3 i32.load8_u select local.set $2 @@ -25829,7 +25810,7 @@ local.get $61 i32.gt_s if - local.get $4 + local.get $3 local.get $61 i32.add i32.load8_u @@ -25880,14 +25861,14 @@ end end local.get $1 - local.get $4 + local.get $3 i32.add i32.load8_u local.tee $1 i32.eqz i32.const 4 i32.add - local.set $4 + local.set $3 local.get $0 i32.const 1 i32.shl @@ -25897,13 +25878,13 @@ i32.const 9488 local.get $1 select - local.get $4 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $6 local.get $0 - local.get $4 + local.get $3 i32.add local.tee $0 i32.gt_s @@ -26253,7 +26234,7 @@ i32.const 3 i32.const 13424 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store offset=144 local.get $0 call $~lib/array/Array#toString @@ -26320,7 +26301,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 call $~lib/array/Array#toString local.set $0 global.get $~lib/memory/__stack_pointer @@ -26373,7 +26354,7 @@ local.set $62 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $1 i32.load offset=12 local.set $1 @@ -26407,7 +26388,7 @@ local.get $1 i32.eqz if - local.get $4 + local.get $3 i32.load8_s call $~lib/util/number/itoa32 local.set $2 @@ -26446,7 +26427,7 @@ i32.shl local.get $2 i32.add - local.get $4 + local.get $3 local.get $62 i32.add i32.load8_s @@ -26485,7 +26466,7 @@ local.get $2 i32.add local.get $1 - local.get $4 + local.get $3 i32.add i32.load8_s call $~lib/util/number/itoa_buffered @@ -26562,7 +26543,7 @@ local.set $62 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $1 i32.load offset=12 local.set $1 @@ -26596,7 +26577,7 @@ local.get $1 i32.eqz if - local.get $4 + local.get $3 i32.load16_u call $~lib/util/number/utoa32 local.set $2 @@ -26638,7 +26619,7 @@ local.get $62 i32.const 1 i32.shl - local.get $4 + local.get $3 i32.add i32.load16_u call $~lib/util/number/itoa_buffered @@ -26678,7 +26659,7 @@ local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $3 i32.add i32.load16_u call $~lib/util/number/itoa_buffered @@ -26934,7 +26915,7 @@ local.set $62 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $1 i32.load offset=12 local.set $1 @@ -26973,7 +26954,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.load local.tee $0 i32.store @@ -27010,7 +26991,7 @@ local.get $62 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load local.tee $5 @@ -27050,7 +27031,7 @@ local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load local.tee $0 @@ -27148,7 +27129,7 @@ local.set $62 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $1 i32.load offset=12 local.set $1 @@ -27187,7 +27168,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.load local.tee $0 i32.store @@ -27224,7 +27205,7 @@ local.get $62 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load local.tee $5 @@ -27264,7 +27245,7 @@ local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load local.tee $0 @@ -27370,7 +27351,7 @@ local.set $62 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $1 i32.load offset=12 local.set $1 @@ -27409,7 +27390,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.load local.tee $0 i32.store @@ -27446,7 +27427,7 @@ local.get $62 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load local.tee $5 @@ -27486,7 +27467,7 @@ local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load local.tee $0 @@ -27702,9 +27683,9 @@ local.get $2 i32.add i32.load - local.tee $4 + local.tee $3 if (result i32) - local.get $4 + local.get $3 i32.load offset=12 else i32.const 0 @@ -27723,7 +27704,7 @@ local.get $29 i32.const 2 i32.shl - local.tee $4 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new local.tee $5 @@ -27738,7 +27719,7 @@ local.get $29 i32.store offset=12 local.get $6 - local.get $4 + local.get $3 i32.store offset=8 local.get $6 local.get $5 @@ -27766,23 +27747,23 @@ local.get $2 i32.add i32.load - local.tee $4 + local.tee $3 if - local.get $3 + local.get $4 local.get $5 i32.add - local.get $4 + local.get $3 i32.load offset=4 - local.get $4 + local.get $3 i32.load offset=12 i32.const 2 i32.shl - local.tee $4 + local.tee $3 call $~lib/memory/memory.copy local.get $3 local.get $4 i32.add - local.set $3 + local.set $4 end local.get $60 i32.const 1 @@ -28320,7 +28301,7 @@ if i32.const 1056 i32.const 1104 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -28339,10 +28320,6 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill local.get $1 local.get $3 i32.store @@ -28547,7 +28524,7 @@ if i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -28942,7 +28919,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -28962,7 +28939,7 @@ if i32.const 5952 i32.const 1104 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -29000,7 +28977,7 @@ if i32.const 1344 i32.const 1104 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -29471,7 +29448,7 @@ if i32.const 1056 i32.const 1104 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -29490,10 +29467,6 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - local.get $2 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill local.get $0 local.get $2 i32.store @@ -30255,7 +30228,7 @@ i32.store end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -30294,7 +30267,7 @@ if i32.const 1056 i32.const 1104 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -30308,15 +30281,11 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - local.get $2 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill local.get $0 local.get $2 i32.store @@ -30331,7 +30300,7 @@ local.get $2 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -30340,7 +30309,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -30681,7 +30650,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -31167,7 +31136,7 @@ if i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -31288,7 +31257,7 @@ if i32.const 2176 i32.const 1104 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -31512,7 +31481,7 @@ if i32.const 2176 i32.const 1104 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -32124,7 +32093,7 @@ i32.store i32.const 15152 i32.const 1104 - i32.const 462 + i32.const 469 i32.const 7 call $~lib/builtins/abort unreachable @@ -32206,7 +32175,7 @@ i32.store end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -32245,7 +32214,7 @@ if i32.const 1056 i32.const 1104 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -32257,15 +32226,11 @@ i32.const 8 i32.gt_u select - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - local.get $2 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill local.get $0 local.get $2 i32.store @@ -32280,7 +32245,7 @@ local.get $2 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -32289,7 +32254,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -32596,7 +32561,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -33011,7 +32976,7 @@ if i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -33220,7 +33185,7 @@ if i32.const 2176 i32.const 1104 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -33437,7 +33402,7 @@ if i32.const 2176 i32.const 1104 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -34447,7 +34412,7 @@ if i32.const 1344 i32.const 1104 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -34467,7 +34432,7 @@ if i32.const 5952 i32.const 1104 - i32.const 144 + i32.const 151 i32.const 40 call $~lib/builtins/abort unreachable @@ -34916,7 +34881,7 @@ if i32.const 1056 i32.const 1104 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -35062,7 +35027,7 @@ if i32.const 2176 i32.const 1104 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -35332,7 +35297,7 @@ if i32.const 2176 i32.const 1104 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index c2c0f7c8d6..5604a6719a 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -33,6 +33,9 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -45,6 +48,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $std/array/arr (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/array/i (mut i32) (i32.const 0)) @@ -4258,7 +4262,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4434,7 +4438,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4585,7 +4589,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4629,14 +4633,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -4696,7 +4696,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4725,7 +4725,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -4802,7 +4802,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -5053,7 +5053,7 @@ if i32.const 1152 i32.const 80 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -5502,7 +5502,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6040,7 +6040,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6589,7 +6589,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -9116,7 +9116,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -12053,7 +12053,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -12970,7 +12970,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -14990,7 +14990,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -19166,7 +19166,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -19210,7 +19210,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -19541,7 +19541,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -19623,7 +19623,7 @@ if i32.const 1152 i32.const 80 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -19836,7 +19836,7 @@ drop i32.const 14128 i32.const 80 - i32.const 462 + i32.const 469 i32.const 7 call $~lib/builtins/abort unreachable @@ -20079,7 +20079,7 @@ if i32.const 320 i32.const 80 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -20123,7 +20123,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -20458,7 +20458,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -20540,7 +20540,7 @@ if i32.const 1152 i32.const 80 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable @@ -21581,7 +21581,7 @@ drop i32.const 14128 i32.const 80 - i32.const 462 + i32.const 469 i32.const 7 call $~lib/builtins/abort unreachable @@ -22061,7 +22061,7 @@ drop i32.const 14128 i32.const 80 - i32.const 462 + i32.const 469 i32.const 7 call $~lib/builtins/abort unreachable @@ -36972,7 +36972,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -36994,10 +36994,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -37087,7 +37087,7 @@ if i32.const 32 i32.const 576 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -37101,10 +37101,10 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $3 call $~lib/arraybuffer/ArrayBufferView#set:buffer @@ -37275,7 +37275,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -37699,7 +37699,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -37724,7 +37724,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -37879,7 +37879,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -38628,7 +38628,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -38653,7 +38653,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -38710,7 +38710,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -38732,10 +38732,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array<~lib/array/Array>#set:buffer @@ -38836,7 +38836,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -38861,7 +38861,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -38918,7 +38918,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -38940,10 +38940,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array>#set:buffer @@ -39013,7 +39013,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -39038,7 +39038,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -39069,7 +39069,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -39141,7 +39141,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -39163,10 +39163,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array<~lib/string/String>#set:buffer @@ -39317,7 +39317,7 @@ if i32.const 320 i32.const 80 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -39342,7 +39342,7 @@ if i32.const 4928 i32.const 80 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable @@ -42401,7 +42401,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -42423,10 +42423,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -42520,7 +42520,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -42926,7 +42926,7 @@ if i32.const 32 i32.const 80 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -42948,10 +42948,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -43045,7 +43045,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -43471,7 +43471,7 @@ if i32.const 320 i32.const 80 - i32.const 140 + i32.const 147 i32.const 33 call $~lib/builtins/abort unreachable @@ -43496,7 +43496,7 @@ if i32.const 4928 i32.const 80 - i32.const 144 + i32.const 151 i32.const 40 call $~lib/builtins/abort unreachable @@ -43554,7 +43554,7 @@ if i32.const 32 i32.const 80 - i32.const 237 + i32.const 244 i32.const 60 call $~lib/builtins/abort unreachable @@ -43679,7 +43679,7 @@ if i32.const 1152 i32.const 80 - i32.const 284 + i32.const 291 i32.const 18 call $~lib/builtins/abort unreachable @@ -43813,7 +43813,7 @@ if i32.const 1152 i32.const 80 - i32.const 343 + i32.const 350 i32.const 18 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 8659d57eda..65e99ff7d4 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1204,182 +1204,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1448,7 +1272,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1463,7 +1287,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1476,7 +1300,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1484,7 +1308,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1495,16 +1319,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1515,16 +1339,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1532,7 +1356,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1540,8 +1364,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1558,7 +1382,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1568,13 +1392,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1587,40 +1411,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1680,10 +1504,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2679,9 +2675,6 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - local.get $1 - i32.const 8 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3268,7 +3261,7 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -3282,9 +3275,6 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - local.get $2 - local.get $1 - call $~lib/memory/memory.fill local.get $0 local.get $2 i32.store diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 7ecfbcb398..b76e1b5d56 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -10,6 +10,9 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -22,6 +25,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 688)) (global $~lib/memory/__data_end i32 (i32.const 820)) @@ -4674,7 +4678,7 @@ if i32.const 32 i32.const 80 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -4685,10 +4689,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer @@ -4834,7 +4838,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -4848,10 +4852,10 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $3 call $~lib/arraybuffer/ArrayBufferView#set:buffer diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index cf6693f344..41d48e4299 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -1210,182 +1210,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1454,7 +1278,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1469,7 +1293,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1482,7 +1306,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1490,7 +1314,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1501,16 +1325,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1521,16 +1345,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1538,7 +1362,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1546,8 +1370,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1564,7 +1388,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1574,13 +1398,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1593,40 +1417,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1686,10 +1510,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 @@ -2539,9 +2535,6 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 8 - call $~lib/memory/memory.fill local.get $0 local.get $3 i32.store diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index c7a83d2dd4..63b8b01b7e 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -17,6 +17,9 @@ (type $i32_i32_f32_i32_=>_none (func (param i32 i32 f32 i32))) (type $i32_i32_f64_i32_=>_none (func (param i32 i32 f64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -29,6 +32,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 720)) (global $~lib/memory/__data_end i32 (i32.const 764)) @@ -5160,7 +5164,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -5174,10 +5178,10 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $3 call $~lib/arraybuffer/ArrayBufferView#set:buffer diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index fc0abbc385..44fa1b416f 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -1570,182 +1570,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1814,7 +1638,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1829,7 +1653,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1842,7 +1666,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1850,7 +1674,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1861,16 +1685,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1881,16 +1705,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1898,7 +1722,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1906,8 +1730,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1924,7 +1748,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1934,13 +1758,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1953,40 +1777,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -2046,10 +1870,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) local.get $1 @@ -3830,20 +3826,19 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - local.get $0 - i32.load offset=12 - local.tee $6 - i32.const 1 - i32.add - local.tee $4 local.get $0 local.tee $2 i32.load offset=8 - local.tee $8 + local.tee $0 i32.const 2 i32.shr_u - i32.gt_u + local.get $2 + i32.load offset=12 + local.tee $5 + i32.const 1 + i32.add + local.tee $4 + i32.lt_u if local.get $4 i32.const 268435455 @@ -3851,13 +3846,13 @@ if i32.const 6448 i32.const 6496 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $8 + local.get $0 i32.const 1 i32.shl local.tee $0 @@ -3880,14 +3875,14 @@ local.get $3 i32.gt_u select - local.tee $9 + local.tee $7 local.get $2 i32.load - local.tee $7 + local.tee $6 local.tee $0 i32.const 20 i32.sub - local.tee $5 + local.tee $8 i32.load i32.const -4 i32.and @@ -3895,23 +3890,23 @@ i32.sub i32.le_u if - local.get $5 - local.get $9 + local.get $8 + local.get $7 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $9 - local.get $5 + local.get $7 + local.get $8 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $3 local.get $0 - local.get $9 - local.get $5 + local.get $7 + local.get $8 i32.load offset=16 local.tee $0 local.get $0 - local.get $9 + local.get $7 i32.gt_u select call $~lib/memory/memory.copy @@ -3919,14 +3914,7 @@ local.set $0 end local.get $0 - local.get $8 - i32.add - local.get $9 - local.get $8 - i32.sub - call $~lib/memory/memory.fill - local.get $0 - local.get $7 + local.get $6 i32.ne if local.get $2 @@ -3944,12 +3932,12 @@ end end local.get $2 - local.get $9 + local.get $7 i32.store offset=8 end local.get $2 i32.load offset=4 - local.get $6 + local.get $5 i32.const 2 i32.shl i32.add @@ -9696,7 +9684,7 @@ if i32.const 1392 i32.const 6496 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -9716,7 +9704,7 @@ if i32.const 6544 i32.const 6496 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 8125ecd31f..fcee4fcf69 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -29,11 +29,15 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 6480)) (global $~lib/memory/__data_end i32 (i32.const 6540)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22924)) @@ -5270,7 +5274,7 @@ if i32.const 5424 i32.const 5472 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -5314,14 +5318,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -11335,7 +11335,7 @@ if i32.const 368 i32.const 5472 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11360,7 +11360,7 @@ if i32.const 5520 i32.const 5472 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 0f361c1678..3fab4f4dbf 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -5,6 +5,9 @@ (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/memory/__data_end i32 (i32.const 380)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) (global $~lib/memory/__heap_base i32 (i32.const 16764)) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 981f077769..5eabd47e1c 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1218,182 +1218,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1462,7 +1286,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1477,7 +1301,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1490,7 +1314,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1498,7 +1322,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1509,16 +1333,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1529,16 +1353,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1546,7 +1370,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1554,8 +1378,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1572,7 +1396,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1582,13 +1406,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1601,40 +1425,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1648,56 +1472,228 @@ i32.add local.tee $3 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + 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 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + 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 $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + 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 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 $0 - call $~lib/memory/memory.fill - local.get $1 ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -2640,10 +2636,9 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $2 i32.shr_u local.get $1 @@ -2657,7 +2652,7 @@ if i32.const 1456 i32.const 1728 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -2677,7 +2672,7 @@ block $__inlined_func$~lib/rt/itcms/__renew local.get $3 if - local.get $8 + local.get $4 i32.const 1 i32.shl local.tee $1 @@ -2725,7 +2720,7 @@ local.get $6 i32.gt_u select - local.set $9 + local.set $8 block $~lib/util/memory/memmove|inlined.0 local.get $3 local.tee $2 @@ -2735,10 +2730,10 @@ local.get $1 local.get $2 i32.sub - local.get $9 + local.get $8 i32.sub i32.const 0 - local.get $9 + local.get $8 i32.const 1 i32.shl i32.sub @@ -2746,7 +2741,7 @@ if local.get $2 local.get $1 - local.get $9 + local.get $8 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -2767,13 +2762,13 @@ i32.const 7 i32.and if - local.get $9 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $9 + local.get $8 i32.const 1 i32.sub - local.set $9 + local.set $8 local.get $2 local.tee $5 i32.const 1 @@ -2792,7 +2787,7 @@ end end loop $while-continue|1 - local.get $9 + local.get $8 i32.const 8 i32.ge_u if @@ -2800,10 +2795,10 @@ local.get $1 i64.load i64.store - local.get $9 + local.get $8 i32.const 8 i32.sub - local.set $9 + local.set $8 local.get $2 i32.const 8 i32.add @@ -2817,7 +2812,7 @@ end end loop $while-continue|2 - local.get $9 + local.get $8 if local.get $2 local.tee $5 @@ -2833,10 +2828,10 @@ local.get $4 i32.load8_u i32.store8 - local.get $9 + local.get $8 i32.const 1 i32.sub - local.set $9 + local.set $8 br $while-continue|2 end end @@ -2851,22 +2846,22 @@ if loop $while-continue|3 local.get $2 - local.get $9 + local.get $8 i32.add i32.const 7 i32.and if - local.get $9 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $9 + local.get $8 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 i32.add local.get $1 - local.get $9 + local.get $8 i32.add i32.load8_u i32.store8 @@ -2874,18 +2869,18 @@ end end loop $while-continue|4 - local.get $9 + local.get $8 i32.const 8 i32.ge_u if - local.get $9 + local.get $8 i32.const 8 i32.sub - local.tee $9 + local.tee $8 local.get $2 i32.add local.get $1 - local.get $9 + local.get $8 i32.add i64.load i64.store @@ -2894,16 +2889,16 @@ end end loop $while-continue|5 - local.get $9 + local.get $8 if - local.get $9 + local.get $8 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 i32.add local.get $1 - local.get $9 + local.get $8 i32.add i32.load8_u i32.store8 @@ -2916,13 +2911,6 @@ local.set $1 end local.get $1 - local.get $8 - i32.add - local.get $6 - local.get $8 - i32.sub - call $~lib/memory/memory.fill - local.get $1 local.get $7 i32.ne if @@ -2957,7 +2945,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -2994,7 +2982,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -3028,7 +3016,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3966,7 +3954,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -3983,9 +3971,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/memory/memory.fill local.get $8 local.get $0 i32.store @@ -4142,7 +4127,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6178,7 +6163,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -6195,9 +6180,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/memory/memory.fill local.get $8 local.get $0 i32.store @@ -6354,7 +6336,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -7680,7 +7662,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -8428,7 +8410,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -8447,9 +8429,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/memory/memory.fill local.get $8 local.get $0 i32.store @@ -8606,7 +8585,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -10644,7 +10623,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -10663,9 +10642,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/memory/memory.fill local.get $8 local.get $0 i32.store @@ -10822,7 +10798,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -14245,7 +14221,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14264,9 +14240,6 @@ call $~lib/rt/itcms/__new local.tee $9 i32.store offset=4 - local.get $9 - local.get $8 - call $~lib/memory/memory.fill local.get $2 local.get $9 i32.store @@ -14423,7 +14396,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -15796,7 +15769,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -16303,7 +16276,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -16322,9 +16295,6 @@ call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 - local.get $11 - local.get $9 - call $~lib/memory/memory.fill local.get $10 local.get $11 i32.store @@ -16366,11 +16336,11 @@ i32.and i32.eqz if - local.get $1 + local.get $0 local.tee $2 i32.const 1 i32.add - local.set $1 + local.set $0 local.get $10 local.get $2 local.get $9 @@ -16385,12 +16355,12 @@ end end local.get $10 - local.get $1 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity local.get $10 - local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -16470,10 +16440,10 @@ loop $for-loop|2 local.get $10 i32.load offset=12 - local.get $0 + local.get $1 i32.gt_s if - local.get $0 + local.get $1 local.tee $2 local.get $10 i32.load offset=12 @@ -16481,7 +16451,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -16586,38 +16556,38 @@ i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $4 - local.get $0 + local.get $1 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|0 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if - local.get $0 + local.get $1 local.get $4 i64.store offset=8 else @@ -16680,37 +16650,37 @@ i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=4 local.get $12 i32.load offset=8 - local.tee $1 + local.tee $3 local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add local.set $15 - local.get $3 + local.get $1 local.set $0 loop $while-continue|00 - local.get $1 + local.get $3 local.get $15 i32.ne if - local.get $1 + local.get $3 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $1 + local.get $3 i64.load local.tee $16 i64.store local.get $0 - local.get $1 + local.get $3 i64.load offset=8 i64.store offset=8 local.get $0 @@ -16771,10 +16741,10 @@ i32.add local.set $0 end - local.get $1 + local.get $3 i32.const 24 i32.add - local.set $1 + local.set $3 br $while-continue|00 end end @@ -16791,12 +16761,12 @@ local.get $8 i32.store offset=4 local.get $12 - local.get $3 + local.get $1 i32.store offset=8 - local.get $3 + local.get $1 if local.get $12 - local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $12 @@ -16871,7 +16841,7 @@ local.get $2 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|2 end end @@ -17862,7 +17832,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -17881,9 +17851,6 @@ call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 - local.get $11 - local.get $9 - call $~lib/memory/memory.fill local.get $10 local.get $11 i32.store @@ -17925,11 +17892,11 @@ i32.and i32.eqz if - local.get $1 + local.get $0 local.tee $2 i32.const 1 i32.add - local.set $1 + local.set $0 local.get $10 local.get $2 local.get $9 @@ -17944,12 +17911,12 @@ end end local.get $10 - local.get $1 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity local.get $10 - local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -18029,10 +17996,10 @@ loop $for-loop|2 local.get $10 i32.load offset=12 - local.get $0 + local.get $1 i32.gt_s if - local.get $0 + local.get $1 local.tee $2 local.get $10 i32.load offset=12 @@ -18040,7 +18007,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -18145,38 +18112,38 @@ i32.shl i32.add i32.load - local.set $0 + local.set $1 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $4 - local.get $0 + local.get $1 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|0 end end i32.const 0 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if - local.get $0 + local.get $1 local.get $4 i64.store offset=8 else @@ -18239,37 +18206,37 @@ i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=4 local.get $12 i32.load offset=8 - local.tee $1 + local.tee $3 local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add local.set $15 - local.get $3 + local.get $1 local.set $0 loop $while-continue|00 - local.get $1 + local.get $3 local.get $15 i32.ne if - local.get $1 + local.get $3 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $1 + local.get $3 i64.load local.tee $16 i64.store local.get $0 - local.get $1 + local.get $3 i64.load offset=8 i64.store offset=8 local.get $0 @@ -18330,10 +18297,10 @@ i32.add local.set $0 end - local.get $1 + local.get $3 i32.const 24 i32.add - local.set $1 + local.set $3 br $while-continue|00 end end @@ -18350,12 +18317,12 @@ local.get $8 i32.store offset=4 local.get $12 - local.get $3 + local.get $1 i32.store offset=8 - local.get $3 + local.get $1 if local.get $12 - local.get $3 + local.get $1 call $byn-split-outlined-A$~lib/rt/itcms/__link end local.get $12 @@ -18430,7 +18397,7 @@ local.get $2 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|2 end end @@ -19564,7 +19531,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -19583,9 +19550,6 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store offset=4 - local.get $1 - local.get $2 - call $~lib/memory/memory.fill local.get $4 local.get $1 i32.store @@ -19646,7 +19610,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -19776,7 +19740,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -21604,7 +21568,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -21623,9 +21587,6 @@ call $~lib/rt/itcms/__new local.tee $12 i32.store offset=4 - local.get $12 - local.get $10 - call $~lib/memory/memory.fill local.get $11 local.get $12 i32.store @@ -21686,7 +21647,7 @@ if i32.const 1248 i32.const 1728 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -21816,7 +21777,7 @@ if i32.const 1248 i32.const 1728 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -22532,7 +22493,6 @@ global.set $~lib/rt/itcms/threshold ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -22557,7 +22517,7 @@ if i32.const 1456 i32.const 1504 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -22566,16 +22526,13 @@ local.get $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $0 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -22803,7 +22760,7 @@ if i32.const 1456 i32.const 1728 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -22822,9 +22779,6 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - local.get $2 - call $~lib/memory/memory.fill local.get $1 local.get $3 i32.store diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 2a7dc6da68..397e0e6b2e 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -38,10 +38,14 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 736)) (global $~lib/memory/__data_end i32 (i32.const 996)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17380)) @@ -4123,7 +4127,7 @@ if i32.const 432 i32.const 704 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4167,14 +4171,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -4219,7 +4219,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4300,7 +4300,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4422,7 +4422,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4448,7 +4448,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -5928,7 +5928,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6012,7 +6012,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -7230,7 +7230,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -7314,7 +7314,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -8522,7 +8522,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -8606,7 +8606,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -10434,7 +10434,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -10518,7 +10518,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11725,7 +11725,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -11809,7 +11809,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -13024,7 +13024,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -13108,7 +13108,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -14307,7 +14307,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -14391,7 +14391,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -15607,7 +15607,7 @@ if i32.const 224 i32.const 704 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -15691,7 +15691,7 @@ if i32.const 224 i32.const 704 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -17346,7 +17346,7 @@ if i32.const 432 i32.const 480 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -17357,10 +17357,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer @@ -17588,7 +17588,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -17610,10 +17610,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -17760,7 +17760,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -17782,10 +17782,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -18457,7 +18457,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -18479,10 +18479,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -19061,7 +19061,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -19083,10 +19083,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -19665,7 +19665,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -19687,10 +19687,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -20433,7 +20433,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -20455,10 +20455,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -21037,7 +21037,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -21059,10 +21059,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -21641,7 +21641,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -21663,10 +21663,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -22245,7 +22245,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -22267,10 +22267,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -22849,7 +22849,7 @@ if i32.const 432 i32.const 704 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -22871,10 +22871,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 6d70ba6747..d4999fd5a6 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -20,6 +20,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index ea3d7177e7..f36d38346e 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -7,6 +7,9 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 188)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16572)) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 332ef7d2e2..7d0d132f14 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 445ebedfe3..8015b7a575 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1211,182 +1211,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1455,7 +1279,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1470,7 +1294,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1483,7 +1307,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1491,7 +1315,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1502,16 +1326,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1522,16 +1346,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1539,7 +1363,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1547,8 +1371,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1565,7 +1389,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1575,13 +1399,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1594,103 +1418,275 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 + i32.or + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 i32.or i32.store - local.get $5 - local.get $2 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $6 - i32.const 4 + local.get $5 + local.get $3 + 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 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + 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 $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 i32.sub - i32.const 1 - i32.or + i32.const 0 i32.store - local.get $4 local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 + i32.const 20 + i32.sub + i32.const 0 + i32.store local.get $3 - i32.const -2 - i32.and + i32.const 16 + i32.sub + i32.const 0 i32.store - local.get $2 + local.get $1 + local.get $1 i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 i32.and + i32.const 24 i32.add local.tee $3 + i32.add + local.set $1 + local.get $0 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + 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 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 $0 - call $~lib/memory/memory.fill - local.get $1 ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -2692,10 +2688,9 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $2 i32.shr_u local.get $1 @@ -2709,7 +2704,7 @@ if i32.const 1456 i32.const 1616 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -2729,7 +2724,7 @@ block $__inlined_func$~lib/rt/itcms/__renew local.get $3 if - local.get $8 + local.get $4 i32.const 1 i32.shl local.tee $1 @@ -2777,7 +2772,7 @@ local.get $6 i32.gt_u select - local.set $9 + local.set $8 block $~lib/util/memory/memmove|inlined.0 local.get $3 local.tee $2 @@ -2787,10 +2782,10 @@ local.get $1 local.get $2 i32.sub - local.get $9 + local.get $8 i32.sub i32.const 0 - local.get $9 + local.get $8 i32.const 1 i32.shl i32.sub @@ -2798,7 +2793,7 @@ if local.get $2 local.get $1 - local.get $9 + local.get $8 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -2819,13 +2814,13 @@ i32.const 7 i32.and if - local.get $9 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $9 + local.get $8 i32.const 1 i32.sub - local.set $9 + local.set $8 local.get $2 local.tee $5 i32.const 1 @@ -2844,7 +2839,7 @@ end end loop $while-continue|1 - local.get $9 + local.get $8 i32.const 8 i32.ge_u if @@ -2852,10 +2847,10 @@ local.get $1 i64.load i64.store - local.get $9 + local.get $8 i32.const 8 i32.sub - local.set $9 + local.set $8 local.get $2 i32.const 8 i32.add @@ -2869,7 +2864,7 @@ end end loop $while-continue|2 - local.get $9 + local.get $8 if local.get $2 local.tee $5 @@ -2885,10 +2880,10 @@ local.get $4 i32.load8_u i32.store8 - local.get $9 + local.get $8 i32.const 1 i32.sub - local.set $9 + local.set $8 br $while-continue|2 end end @@ -2903,22 +2898,22 @@ if loop $while-continue|3 local.get $2 - local.get $9 + local.get $8 i32.add i32.const 7 i32.and if - local.get $9 + local.get $8 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $9 + local.get $8 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 i32.add local.get $1 - local.get $9 + local.get $8 i32.add i32.load8_u i32.store8 @@ -2926,18 +2921,18 @@ end end loop $while-continue|4 - local.get $9 + local.get $8 i32.const 8 i32.ge_u if - local.get $9 + local.get $8 i32.const 8 i32.sub - local.tee $9 + local.tee $8 local.get $2 i32.add local.get $1 - local.get $9 + local.get $8 i32.add i64.load i64.store @@ -2946,16 +2941,16 @@ end end loop $while-continue|5 - local.get $9 + local.get $8 if - local.get $9 + local.get $8 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 i32.add local.get $1 - local.get $9 + local.get $8 i32.add i32.load8_u i32.store8 @@ -2968,13 +2963,6 @@ local.set $1 end local.get $1 - local.get $8 - i32.add - local.get $6 - local.get $8 - i32.sub - call $~lib/memory/memory.fill - local.get $1 local.get $7 i32.ne if @@ -3009,7 +2997,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -3041,7 +3029,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3686,7 +3674,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -3703,9 +3691,6 @@ call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 - local.get $11 - local.get $1 - call $~lib/memory/memory.fill local.get $10 local.get $11 i32.store @@ -4711,7 +4696,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -5326,7 +5311,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -5343,9 +5328,6 @@ call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 - local.get $11 - local.get $1 - call $~lib/memory/memory.fill local.get $10 local.get $11 i32.store @@ -6362,7 +6344,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6396,7 +6378,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -7006,7 +6988,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -7025,9 +7007,6 @@ call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 - local.get $11 - local.get $1 - call $~lib/memory/memory.fill local.get $10 local.get $11 i32.store @@ -8033,7 +8012,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -8650,7 +8629,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -8669,9 +8648,6 @@ call $~lib/rt/itcms/__new local.tee $11 i32.store offset=4 - local.get $11 - local.get $1 - call $~lib/memory/memory.fill local.get $10 local.get $11 i32.store @@ -9684,7 +9660,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -9718,7 +9694,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -10261,10 +10237,10 @@ i32.store local.get $4 i32.load offset=8 - local.set $3 + local.set $9 local.get $4 i32.load offset=16 - local.set $9 + local.set $3 local.get $8 i32.const 8 i32.sub @@ -10295,21 +10271,21 @@ local.get $6 i32.const 0 i32.store offset=12 - local.get $9 + local.get $3 i32.const 268435455 i32.gt_u if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $3 i32.const 8 - local.get $9 + local.get $3 i32.const 8 i32.gt_u select @@ -10320,9 +10296,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store offset=4 - local.get $0 - local.get $10 - call $~lib/memory/memory.fill local.get $6 local.get $0 i32.store @@ -10339,7 +10312,7 @@ local.get $10 i32.store offset=8 local.get $6 - local.get $9 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -10349,14 +10322,14 @@ local.get $6 i32.store loop $for-loop|02 + local.get $3 local.get $5 - local.get $9 - i32.lt_s + i32.gt_s if local.get $5 i32.const 3 i32.shl - local.get $3 + local.get $9 i32.add local.tee $8 i32.load offset=4 @@ -10410,7 +10383,7 @@ local.get $6 local.get $1 call $~lib/array/Array#__get - local.tee $2 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10419,27 +10392,27 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.set $3 + local.set $2 local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 16 i32.shr_u i32.xor @@ -10448,12 +10421,12 @@ i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 local.tee $5 i32.const 1 @@ -10461,8 +10434,8 @@ if (result i32) i32.const 0 else - local.get $2 local.get $3 + local.get $2 i32.load i32.eq end @@ -10470,14 +10443,14 @@ local.get $5 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 i32.eqz if i32.const 0 @@ -11293,7 +11266,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11836,10 +11809,10 @@ i32.store local.get $4 i32.load offset=8 - local.set $3 + local.set $9 local.get $4 i32.load offset=16 - local.set $9 + local.set $3 local.get $8 i32.const 8 i32.sub @@ -11870,21 +11843,21 @@ local.get $6 i32.const 0 i32.store offset=12 - local.get $9 + local.get $3 i32.const 268435455 i32.gt_u if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $3 i32.const 8 - local.get $9 + local.get $3 i32.const 8 i32.gt_u select @@ -11895,9 +11868,6 @@ call $~lib/rt/itcms/__new local.tee $0 i32.store offset=4 - local.get $0 - local.get $10 - call $~lib/memory/memory.fill local.get $6 local.get $0 i32.store @@ -11914,7 +11884,7 @@ local.get $10 i32.store offset=8 local.get $6 - local.get $9 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -11924,14 +11894,14 @@ local.get $6 i32.store loop $for-loop|02 + local.get $3 local.get $5 - local.get $9 - i32.lt_s + i32.gt_s if local.get $5 i32.const 3 i32.shl - local.get $3 + local.get $9 i32.add local.tee $8 i32.load offset=4 @@ -11985,7 +11955,7 @@ local.get $6 local.get $1 call $~lib/array/Array#__get - local.tee $2 + local.tee $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11994,27 +11964,27 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.set $3 + local.set $2 local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 16 i32.shr_u i32.xor @@ -12023,12 +11993,12 @@ i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=4 local.tee $5 i32.const 1 @@ -12036,8 +12006,8 @@ if (result i32) i32.const 0 else - local.get $2 local.get $3 + local.get $2 i32.load i32.eq end @@ -12045,14 +12015,14 @@ local.get $5 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 i32.eqz if i32.const 0 @@ -12981,7 +12951,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -13015,7 +12985,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -13391,7 +13361,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -13410,9 +13380,6 @@ call $~lib/rt/itcms/__new local.tee $12 i32.store offset=4 - local.get $12 - local.get $1 - call $~lib/memory/memory.fill local.get $11 local.get $12 i32.store @@ -14103,7 +14070,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -14442,7 +14409,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14461,9 +14428,6 @@ call $~lib/rt/itcms/__new local.tee $12 i32.store offset=4 - local.get $12 - local.get $1 - call $~lib/memory/memory.fill local.get $11 local.get $12 i32.store @@ -15048,7 +15012,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -15634,7 +15598,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15653,9 +15617,6 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - local.get $0 - call $~lib/memory/memory.fill local.get $6 local.get $5 i32.store @@ -15716,7 +15677,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -16781,7 +16742,7 @@ if i32.const 1248 i32.const 1616 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -17123,7 +17084,7 @@ if i32.const 1456 i32.const 1616 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -17142,9 +17103,6 @@ call $~lib/rt/itcms/__new local.tee $12 i32.store offset=4 - local.get $12 - local.get $1 - call $~lib/memory/memory.fill local.get $2 local.get $12 i32.store @@ -17205,7 +17163,7 @@ if i32.const 1248 i32.const 1616 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -17576,7 +17534,6 @@ global.set $~lib/rt/itcms/threshold ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -17601,7 +17558,7 @@ if i32.const 1456 i32.const 1504 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -17610,16 +17567,13 @@ local.get $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $0 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 6fb03112b3..ea82e01e9f 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -35,10 +35,14 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 624)) (global $~lib/memory/__data_end i32 (i32.const 812)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17196)) @@ -4177,7 +4181,7 @@ if i32.const 432 i32.const 592 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4221,14 +4225,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -4273,7 +4273,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4319,7 +4319,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -5243,7 +5243,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -5289,7 +5289,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6215,7 +6215,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -6261,7 +6261,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -7185,7 +7185,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -7231,7 +7231,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -8155,7 +8155,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -8201,7 +8201,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -9113,7 +9113,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -9159,7 +9159,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -10088,7 +10088,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -10134,7 +10134,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -11064,7 +11064,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -11110,7 +11110,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -12024,7 +12024,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -12070,7 +12070,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -13001,7 +13001,7 @@ if i32.const 224 i32.const 592 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -13047,7 +13047,7 @@ if i32.const 224 i32.const 592 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -14121,7 +14121,7 @@ if i32.const 432 i32.const 480 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -14132,10 +14132,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer @@ -14244,7 +14244,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14266,10 +14266,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -14472,7 +14472,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14494,10 +14494,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -14700,7 +14700,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14722,10 +14722,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -14928,7 +14928,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -14950,10 +14950,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -15156,7 +15156,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15178,10 +15178,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -15384,7 +15384,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15406,10 +15406,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -15612,7 +15612,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15634,10 +15634,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -15840,7 +15840,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -15862,10 +15862,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -16068,7 +16068,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -16090,10 +16090,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer @@ -16296,7 +16296,7 @@ if i32.const 432 i32.const 592 - i32.const 65 + i32.const 70 i32.const 60 call $~lib/builtins/abort unreachable @@ -16318,10 +16318,10 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $5 call $~lib/array/Array#set:buffer diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 55a6d361fc..e821382cba 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -68,7 +68,7 @@ if i32.const 1472 i32.const 1536 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -1249,182 +1249,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2135,7 +1959,7 @@ end local.get $5 i32.load offset=12 - local.set $6 + local.set $4 local.get $1 i32.const 1073741804 i32.ge_u @@ -2198,7 +2022,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $3 + local.set $6 local.get $1 i32.const 16 i32.add @@ -2213,7 +2037,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 12 local.get $2 i32.const 19 @@ -2234,7 +2058,7 @@ memory.size local.tee $2 i32.const 4 - local.get $3 + local.get $6 i32.load offset=1568 local.get $2 i32.const 16 @@ -2265,16 +2089,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 + local.tee $3 local.get $2 - local.get $4 + local.get $3 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -2282,7 +2106,7 @@ unreachable end end - local.get $3 + local.get $6 local.get $2 i32.const 16 i32.shl @@ -2290,7 +2114,7 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $6 local.get $7 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -2318,12 +2142,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $4 + local.set $3 local.get $7 i32.const 4 i32.add @@ -2337,7 +2161,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.const -4 i32.and local.get $7 @@ -2347,7 +2171,7 @@ i32.ge_u if local.get $2 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $7 @@ -2358,19 +2182,19 @@ i32.const 4 i32.add i32.add - local.tee $4 + local.tee $3 local.get $8 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $6 local.get $3 - local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $4 + local.get $3 i32.const -2 i32.and i32.store @@ -2390,7 +2214,7 @@ i32.store end local.get $2 - local.get $6 + local.get $4 i32.store offset=12 local.get $2 local.get $1 @@ -2431,8 +2255,180 @@ i32.const 20 i32.add local.tee $4 - local.get $1 - call $~lib/memory/memory.fill + local.set $2 + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 0 + i32.store8 + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 0 + i32.store8 offset=1 + local.get $2 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 0 + local.get $2 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $2 + i32.const 0 + i32.store + local.get $2 + local.get $1 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $3 + i32.add + local.tee $6 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $6 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $6 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + local.get $2 + i32.const 0 + i32.store offset=24 + local.get $6 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $6 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $6 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $6 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $2 + local.get $2 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $6 + i32.add + local.set $2 + local.get $3 + local.get $6 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + if + local.get $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i64.const 0 + i64.store offset=16 + local.get $2 + i64.const 0 + i64.store offset=24 + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $2 + i32.const 32 + i32.add + local.set $2 + br $while-continue|0 + end + end + end local.get $1 local.get $5 i32.load offset=16 @@ -2478,7 +2474,7 @@ i32.and i32.eq if - loop $while-continue|0 + loop $while-continue|00 local.get $1 i32.const 7 i32.and @@ -2504,7 +2500,7 @@ local.get $3 i32.load8_u i32.store8 - br $while-continue|0 + br $while-continue|00 end end loop $while-continue|1 @@ -2633,7 +2629,6 @@ (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 i32.load offset=8 local.tee $2 @@ -2648,7 +2643,7 @@ if i32.const 1584 i32.const 1536 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -2659,41 +2654,34 @@ local.get $2 i32.const 1 i32.shl - local.tee $4 + local.tee $2 i32.const 1073741820 - local.get $4 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $4 + local.tee $2 i32.const 8 local.get $1 i32.shl local.tee $1 local.get $1 - local.get $4 + local.get $2 i32.lt_u select local.tee $1 call $~lib/rt/itcms/__renew - local.tee $4 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.sub - call $~lib/memory/memory.fill + local.tee $2 local.get $3 - local.get $4 i32.ne if local.get $0 - local.get $4 + local.get $2 i32.store local.get $0 - local.get $4 + local.get $2 i32.store offset=4 - local.get $4 + local.get $2 if local.get $0 i32.eqz @@ -2706,7 +2694,7 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $4 + local.get $2 i32.const 20 i32.sub local.tee $2 @@ -2757,7 +2745,7 @@ if i32.const 1472 i32.const 1536 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -2778,7 +2766,7 @@ if i32.const 1472 i32.const 1536 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -2799,7 +2787,7 @@ if i32.const 1472 i32.const 1536 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 627fe6d822..e3d3535279 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -19,6 +19,9 @@ (global $std/static-array/I i32 (i32.const 160)) (global $std/static-array/f i32 (i32.const 240)) (global $std/static-array/F i32 (i32.const 336)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -31,6 +34,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 928)) (global $~lib/memory/__data_end i32 (i32.const 988)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17372)) @@ -73,7 +77,7 @@ if i32.const 448 i32.const 512 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3781,7 +3785,7 @@ if i32.const 560 i32.const 512 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -3825,14 +3829,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -3882,7 +3882,7 @@ if i32.const 448 i32.const 512 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -3918,7 +3918,7 @@ if i32.const 448 i32.const 512 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3964,7 +3964,7 @@ if i32.const 448 i32.const 512 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4000,7 +4000,7 @@ if i32.const 448 i32.const 512 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4046,7 +4046,7 @@ if i32.const 448 i32.const 512 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable @@ -4082,7 +4082,7 @@ if i32.const 448 i32.const 512 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4128,7 +4128,7 @@ if i32.const 448 i32.const 512 - i32.const 123 + i32.const 130 i32.const 22 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index c0f49c33a3..f98edcb496 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -3,9 +3,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) @@ -173,7 +173,7 @@ if i32.const 1088 i32.const 1152 - i32.const 115 + i32.const 118 i32.const 41 call $~lib/builtins/abort unreachable @@ -197,7 +197,7 @@ if i32.const 1088 i32.const 1152 - i32.const 130 + i32.const 133 i32.const 41 call $~lib/builtins/abort unreachable @@ -1583,334 +1583,330 @@ end local.get $1 ) - (func $~lib/memory/memory.fill (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.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1344 + i32.const 1408 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-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 + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + local.get $2 + 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 + global.get $~lib/rt/itcms/white + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $2 + 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 $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 local.get $1 - local.get $2 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $0 i32.add - local.tee $2 + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 i32.const 0 i32.store offset=24 - local.get $2 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $2 + local.tee $3 i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 32 i32.ge_u if - local.get $0 + local.get $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i64.const 0 i64.store offset=16 - local.get $0 + local.get $1 i64.const 0 i64.store offset=24 - local.get $1 + local.get $0 i32.const 32 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 32 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end end + local.get $2 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + loop $while-continue|0 + local.get $1 + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1344 - i32.const 1408 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-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 - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - local.get $2 - 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 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - 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 $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.eqz + i32.const 3 + i32.and + i32.eqz if loop $while-continue|1 local.get $2 @@ -2771,7 +2767,7 @@ if i32.const 1088 i32.const 1776 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -3999,13 +3995,13 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) + (local $11 f32) + (local $12 f64) (local $13 i32) (local $14 i32) (local $15 i32) - (local $16 f32) - (local $17 f64) + (local $16 i32) + (local $17 i32) (local $18 i32) (local $19 i32) (local $20 i32) @@ -4013,7 +4009,6 @@ (local $22 i32) (local $23 i32) (local $24 i32) - (local $25 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -4024,19 +4019,19 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $21 i64.const 0 i64.store - local.get $3 + local.get $21 i64.const 0 i64.store offset=8 - local.get $3 + local.get $21 i64.const 0 i64.store offset=16 - local.get $3 + local.get $21 i64.const 0 i64.store offset=24 - local.get $3 + local.get $21 i32.const 1056 i32.store i32.const 1056 @@ -4193,17 +4188,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $21 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $3 + local.get $21 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $3 + local.tee $21 i32.store - local.get $3 + local.get $21 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4218,9 +4213,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $3 + local.tee $21 i32.store - local.get $3 + local.get $21 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4235,9 +4230,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $3 + local.tee $21 i32.store - local.get $3 + local.get $21 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4252,9 +4247,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $3 + local.tee $21 i32.store - local.get $3 + local.get $21 i32.const 20 i32.sub i32.load offset=16 @@ -4272,16 +4267,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $3 + local.tee $21 i32.store - local.get $3 + local.get $21 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $3 + local.tee $21 i32.store - local.get $3 + local.get $21 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4297,17 +4292,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $21 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $3 + local.get $21 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $3 + local.tee $21 i32.store - local.get $3 + local.get $21 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4324,17 +4319,17 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $21 i32.store offset=4 - local.get $3 + local.get $21 i32.const 0 call $std/staticarray/Ref#constructor call $~lib/staticarray/StaticArray#__uset - local.get $3 + local.get $21 i32.const 1 call $std/staticarray/Ref#constructor call $~lib/staticarray/StaticArray#__uset - local.get $3 + local.get $21 global.set $std/staticarray/arr4 i32.const 0 global.set $std/staticarray/arr3 @@ -4350,25 +4345,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $22 i32.const 0 i32.store - local.get $3 + local.get $22 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $22 i32.store - local.get $3 - i32.const 12 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $22 i32.store offset=4 - local.get $3 + local.get $22 i32.const 20 i32.sub i32.load offset=16 @@ -4385,17 +4377,17 @@ unreachable end loop $for-loop|0 - local.get $3 + local.get $22 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $2 + local.get $1 i32.gt_s if - local.get $3 - local.get $2 + local.get $22 + local.get $1 call $~lib/staticarray/StaticArray#__get if i32.const 0 @@ -4405,10 +4397,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -4417,16 +4409,16 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 call $~lib/staticarray/StaticArray.fromArray - local.tee $2 + local.tee $21 i32.store offset=4 - local.get $3 + local.get $1 i32.load offset=12 - local.get $2 + local.get $21 i32.const 20 i32.sub i32.load offset=16 @@ -4442,16 +4434,16 @@ unreachable end loop $for-loop|1 - local.get $3 + local.get $1 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $2 - local.get $6 + local.get $21 + local.get $0 call $~lib/staticarray/StaticArray#__get - local.get $3 - local.get $6 + local.get $1 + local.get $0 call $~lib/array/Array#__get i32.ne if @@ -4462,10 +4454,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|1 end end @@ -4474,15 +4466,15 @@ i32.const 6 i32.const 1824 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/staticarray/StaticArray.fromArray - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4500,29 +4492,29 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $0 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $5 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $21 i32.const 1888 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $21 i32.store offset=12 - local.get $5 - local.get $2 + local.get $0 + local.get $21 call $~lib/staticarray/StaticArray.concat - local.tee $2 + local.tee $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4542,25 +4534,25 @@ i32.const 0 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $21 i32.const 1920 i32.const 0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $21 i32.store offset=12 - local.get $5 - local.get $2 + local.get $0 + local.get $21 call $~lib/staticarray/StaticArray.concat - local.tee $2 + local.tee $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $5 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4579,26 +4571,26 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $1 i32.const 2128 i32.const 20 call $~lib/memory/memory.copy - local.get $7 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $6 + local.tee $21 i32.store offset=4 - local.get $6 + local.get $21 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4614,33 +4606,33 @@ unreachable end i32.const 0 - local.set $2 + local.set $0 loop $for-loop|2 - local.get $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $2 + local.get $0 i32.gt_s if - local.get $7 - local.get $2 + local.get $1 + local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $5 + local.set $22 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $22 i32.store - local.get $6 - local.get $2 + local.get $21 + local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $23 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $23 i32.store offset=12 - local.get $5 - local.get $3 + local.get $22 + local.get $23 call $~lib/string/String.__eq i32.eqz if @@ -4651,21 +4643,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $5 + local.tee $0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4681,18 +4673,18 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $21 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $3 + local.tee $22 + local.get $21 i32.store - local.get $2 + local.get $22 i32.const 1984 i32.store offset=12 - local.get $3 + local.get $21 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -4704,18 +4696,18 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $3 + local.tee $21 + local.get $0 i32.store - local.get $2 + local.get $21 i32.const 2016 i32.store offset=12 - local.get $3 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -4728,13 +4720,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4742,7 +4734,7 @@ i32.shr_u i32.const 1 i32.sub - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4758,19 +4750,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4786,13 +4778,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 100 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4807,13 +4799,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const -1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4829,18 +4821,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $3 + local.tee $21 + local.get $0 i32.store - local.get $2 + local.get $21 i32.const 2080 i32.store offset=12 - local.get $3 + local.get $0 i32.const 2080 call $~lib/string/String.__eq i32.eqz @@ -4853,13 +4845,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4874,13 +4866,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4896,18 +4888,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $3 + local.tee $1 + local.get $0 i32.store - local.get $2 + local.get $1 i32.const 2016 i32.store offset=12 - local.get $3 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -4923,29 +4915,29 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $5 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 9 i32.const 2352 call $~lib/rt/__newArray - local.set $2 + local.set $21 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $21 i32.store offset=12 - local.get $5 - local.get $2 + local.get $1 + local.get $21 call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $2 + local.tee $0 i32.store offset=16 - local.get $2 + local.get $0 i32.load offset=12 - local.get $5 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4965,18 +4957,18 @@ i32.const 9 i32.const 2416 call $~lib/rt/__newArray - local.set $2 + local.set $21 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $21 i32.store offset=12 - local.get $5 - local.get $2 + local.get $1 + local.get $21 call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $2 + local.tee $0 i32.store offset=16 - local.get $2 + local.get $0 i32.load offset=12 - local.get $5 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4997,16 +4989,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $2 + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $2 + local.get $1 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5023,7 +5015,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $2 + local.get $1 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5038,7 +5030,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $2 + local.get $1 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5053,7 +5045,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $2 + local.get $1 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5071,49 +5063,49 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $0 i32.const 2496 i32.const 8 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store i32.const 0 - local.get $3 + 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 br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 - local.get $0 - local.get $2 - i32.lt_s + local.get $1 + local.get $7 + i32.gt_s if i32.const 1 - local.get $0 + local.get $7 i32.const 3 i32.shl - local.get $3 + local.get $0 i32.add f64.load - local.tee $17 + local.tee $12 f64.const nan:0x8000000000000 f64.eq - local.get $17 - local.get $17 + local.get $12 + local.get $12 f64.ne i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $0 + local.get $7 i32.const 1 i32.add - local.set $0 + local.set $7 br $while-continue|0 end end @@ -5132,49 +5124,49 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 2528 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|09 - local.get $0 - local.get $9 + local.get $1 + local.get $8 i32.gt_s if i32.const 1 - local.get $9 + local.get $8 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add f32.load - local.tee $16 + local.tee $11 f32.const nan:0x400000 f32.eq - local.get $16 - local.get $16 + local.get $11 + local.get $11 f32.ne i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $9 + local.get $8 i32.const 1 i32.add - local.set $9 + local.set $8 br $while-continue|09 end end @@ -5193,34 +5185,34 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $7 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $3 + local.get $7 i32.store offset=16 i32.const -1 local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $3 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf loop $while-continue|012 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if - local.get $1 + local.get $2 local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $7 i32.add i32.load i32.const 2 @@ -5229,7 +5221,7 @@ local.get $0 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|012 end end @@ -5248,7 +5240,7 @@ i32.const -1 local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf13 - local.get $3 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5259,14 +5251,14 @@ br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf13 loop $while-continue|028 local.get $1 - local.get $4 + local.get $3 i32.gt_s if - local.get $4 + local.get $3 local.tee $0 i32.const 2 i32.shl - local.get $3 + local.get $7 i32.add i32.load i32.const 7 @@ -5275,7 +5267,7 @@ local.get $0 i32.const 1 i32.add - local.set $4 + local.set $3 br $while-continue|028 end end @@ -5294,11 +5286,11 @@ unreachable end i32.const 2 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf29 - local.get $3 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5312,31 +5304,31 @@ select br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf29 loop $while-continue|033 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $3 + local.get $7 i32.add i32.load i32.const 9 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf29 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 2 i32.ne if @@ -5348,22 +5340,22 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf34 - local.get $3 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.const 0 i32.lt_u i32.const 1 - local.get $2 + local.get $1 select br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 - local.get $2 + local.get $1 i32.const 1 i32.sub local.tee $0 @@ -5372,32 +5364,32 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $while-continue|037 + local.get $0 local.get $1 - local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $7 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|037 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -5409,56 +5401,56 @@ unreachable end i32.const -1 - local.set $2 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf38 - local.get $3 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.const -3 i32.le_s i32.const 1 - local.get $1 + local.get $0 select br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf38 - local.get $1 + local.get $0 i32.const 3 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $2 + local.set $1 loop $while-continue|041 + local.get $0 local.get $1 - local.get $2 i32.gt_s if - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $7 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf38 - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $while-continue|041 end end i32.const -1 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 if i32.const 0 i32.const 1216 @@ -5471,76 +5463,75 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.const 2592 i32.const 16 call $~lib/memory/memory.copy - local.get $3 + local.get $2 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $3 - local.tee $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $4 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $2 - local.get $4 + local.get $1 + local.get $3 i32.add - local.get $2 + local.get $3 i32.const 1 i32.sub - local.get $4 - local.get $2 - local.get $4 - i32.le_s + local.get $1 + local.get $1 + local.get $3 + i32.ge_s select - local.get $4 + local.get $1 i32.const 0 i32.lt_s select - local.set $2 + local.set $1 loop $while-continue|01 - local.get $2 + local.get $1 i32.const 0 i32.ge_s if - local.get $2 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $1 br $while-continue|01 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -5553,62 +5544,62 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $4 - local.set $2 + local.tee $1 + local.set $3 i32.const -1 - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 - local.get $4 + local.get $1 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 - local.get $2 - local.get $4 + local.get $1 + local.get $3 i32.add - local.get $4 + local.get $1 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $4 - i32.ge_s + local.get $3 + local.get $1 + local.get $3 + i32.le_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select - local.set $2 + local.set $1 loop $while-continue|07 - local.get $2 + local.get $1 i32.const 0 i32.ge_s if - local.get $2 - local.tee $1 + local.get $1 + local.tee $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 7 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf6 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $1 br $while-continue|07 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -5620,51 +5611,51 @@ unreachable end i32.const -1 - local.set $1 + local.set $7 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 - local.get $2 + local.get $0 i32.const 1 i32.sub i32.const 3 - local.get $2 + local.get $0 i32.const 3 i32.le_s select - local.set $1 + local.set $7 loop $while-continue|044 - local.get $1 + local.get $7 i32.const 0 i32.ge_s if - local.get $1 + local.get $7 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf8 - local.get $1 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $while-continue|044 end end i32.const -1 - local.set $1 + local.set $7 end - local.get $1 + local.get $7 i32.const 3 i32.ne if @@ -5676,51 +5667,51 @@ unreachable end i32.const -1 - local.set $1 + local.set $7 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 - local.get $2 + local.get $0 i32.const 1 i32.sub i32.const 2 - local.get $2 + local.get $0 i32.const 2 i32.le_s select - local.set $1 + local.set $7 loop $while-continue|048 - local.get $1 + local.get $7 i32.const 0 i32.ge_s if - local.get $1 + local.get $7 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 - local.get $1 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $while-continue|048 end end i32.const -1 - local.set $1 + local.set $7 end - local.get $1 + local.get $7 if i32.const 0 i32.const 1216 @@ -5730,46 +5721,46 @@ unreachable end i32.const -1 - local.set $1 + local.set $7 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 - local.get $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $7 loop $while-continue|052 - local.get $1 + local.get $7 i32.const 0 i32.ge_s if - local.get $1 + local.get $7 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf49 - local.get $1 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $while-continue|052 end end i32.const -1 - local.set $1 + local.set $7 end - local.get $1 + local.get $7 if i32.const 0 i32.const 1216 @@ -5779,9 +5770,9 @@ unreachable end i32.const -1 - local.set $2 + local.set $8 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 - local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5793,32 +5784,32 @@ local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $8 loop $while-continue|056 - local.get $2 + local.get $8 i32.const 0 i32.ge_s if - local.get $2 + local.get $8 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf53 - local.get $2 + local.get $8 i32.const 1 i32.sub - local.set $2 + local.set $8 br $while-continue|056 end end i32.const -1 - local.set $2 + local.set $8 end - local.get $2 + local.get $8 i32.const 3 i32.ne if @@ -5833,17 +5824,17 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.const 2736 i32.const 12 call $~lib/memory/memory.copy - local.get $2 + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5873,8 +5864,8 @@ global.get $~lib/memory/__stack_pointer i32.const 2768 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5904,8 +5895,8 @@ global.get $~lib/memory/__stack_pointer i32.const 2928 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5935,8 +5926,8 @@ global.get $~lib/memory/__stack_pointer i32.const 3008 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5966,8 +5957,8 @@ global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5975,9 +5966,9 @@ i32.shr_u i32.const 2800 call $~lib/util/string/joinStringArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -5988,14 +5979,14 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 2800 i32.store - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6003,16 +5994,16 @@ i32.shr_u i32.const 2800 call $~lib/util/string/joinStringArray - local.set $0 + 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 $0 - i32.store offset=12 local.get $1 + i32.store offset=12 local.get $0 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -6027,45 +6018,45 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 3104 i32.const 8 call $~lib/memory/memory.copy - local.get $2 + local.get $0 i32.store offset=16 i32.const 1 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 1 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|060 - local.get $0 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 $0 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|060 end end - local.get $2 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6076,7 +6067,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6093,13 +6084,13 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.const 3136 i32.const 12 call $~lib/memory/memory.copy - local.get $4 + local.get $1 i32.store offset=16 - local.get $4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6112,47 +6103,47 @@ local.get $0 i32.const 1 i32.shr_u - local.set $3 + local.set $2 local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $0 loop $while-continue|064 - local.get $3 - local.get $10 + local.get $2 + local.get $4 i32.gt_u if - local.get $10 + local.get $4 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add - local.tee $0 + local.tee $3 i32.load - local.set $1 + local.set $7 + local.get $3 local.get $0 - local.get $2 - local.get $10 + local.get $4 i32.sub i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add - local.tee $0 + local.tee $3 i32.load i32.store - local.get $0 - local.get $1 + local.get $3 + local.get $7 i32.store - local.get $10 + local.get $4 i32.const 1 i32.add - local.set $10 + local.set $4 br $while-continue|064 end end end - local.get $4 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6165,7 +6156,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6178,7 +6169,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6195,78 +6186,79 @@ i32.const 20 i32.const 3 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.const 3168 i32.const 20 call $~lib/memory/memory.copy - local.get $4 + local.get $1 i32.store offset=16 - local.get $4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 - local.set $0 + local.tee $0 + local.tee $2 + local.set $3 i32.const 0 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 0 i32.gt_s select local.tee $2 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.const 3 - local.get $3 - local.get $3 + local.get $0 + local.get $0 i32.const 3 i32.gt_s select - local.tee $1 + local.tee $4 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add - local.get $0 + local.get $3 i32.const 0 i32.lt_s if (result i32) local.get $0 local.get $3 i32.add - local.tee $0 + local.tee $3 i32.const 0 - local.get $0 + local.get $3 i32.const 0 i32.gt_s select else - local.get $0 local.get $3 local.get $0 + local.get $0 local.get $3 - i32.lt_s + i32.gt_s select end - local.get $1 + local.get $4 i32.sub - local.tee $1 - local.get $3 + local.tee $3 + local.get $0 local.get $2 i32.sub local.tee $0 local.get $0 - local.get $1 + local.get $3 i32.gt_s select i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6279,7 +6271,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6292,7 +6284,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6305,7 +6297,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6318,7 +6310,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6335,17 +6327,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.const 3216 i32.const 12 call $~lib/memory/memory.copy - local.get $4 + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $2 i32.const 3248 i32.store offset=12 - local.get $6 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6358,50 +6350,51 @@ i32.const 0 i32.store local.get $0 - local.get $4 + local.get $1 + local.tee $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $5 + local.tee $3 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.load offset=4 - local.set $2 + local.set $7 loop $for-loop|042 + local.get $3 local.get $5 - local.get $11 i32.gt_s if - local.get $11 + local.get $5 i32.const 2 i32.shl - local.tee $1 - local.get $4 + local.tee $8 + local.get $0 i32.add i32.load - local.set $0 + local.set $21 i32.const 3 global.set $~argumentsLength - local.get $1 - local.get $2 + local.get $7 + local.get $8 i32.add + local.get $21 + local.get $5 local.get $0 - local.get $11 - local.get $4 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $11 + local.get $5 i32.const 1 i32.add - local.set $11 + local.set $5 br $for-loop|042 end end @@ -6409,10 +6402,10 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $3 + local.get $2 + local.get $4 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6425,7 +6418,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6438,7 +6431,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 2 call $~lib/array/Array#__get i32.const 4 @@ -6454,35 +6447,35 @@ global.get $~lib/memory/__stack_pointer i32.const 3280 i32.store offset=12 - local.get $4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|070 - local.get $1 - local.get $8 + local.get $2 + local.get $6 i32.gt_s if - local.get $8 + local.get $6 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $8 - local.get $4 + local.get $6 + local.get $0 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $8 + local.get $6 i32.const 1 i32.add - local.set $8 + local.set $6 br $for-loop|070 end end @@ -6498,10 +6491,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $11 + local.tee $5 i32.const 3312 i32.store offset=12 - local.get $11 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6510,101 +6503,102 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $2 i32.store - local.get $4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $10 + local.set $4 loop $for-loop|045 - local.get $10 - local.get $23 + local.get $4 + local.get $18 i32.gt_s if - local.get $23 + local.get $18 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load - local.set $9 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $9 - local.get $23 - local.get $4 + local.get $6 + local.get $18 + local.get $0 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $3 + local.get $2 + local.tee $3 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 1 i32.add - local.tee $7 + local.tee $8 + local.set $21 local.get $3 - local.tee $2 i32.load offset=8 - local.tee $6 + local.tee $22 i32.const 2 i32.shr_u - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $21 i32.const 268435455 i32.gt_u if i32.const 1680 i32.const 1776 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/rt/itcms/__renew - local.get $6 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.get $22 i32.const 1 i32.shl - local.tee $0 + local.tee $22 i32.const 1073741820 - local.get $0 + local.get $22 i32.const 1073741820 i32.lt_u select - local.tee $1 - local.get $7 + local.tee $22 + local.get $21 i32.const 8 - local.get $7 + local.get $21 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $0 - local.get $0 - local.get $1 + local.tee $21 + local.get $21 + local.get $22 i32.lt_u select - local.tee $13 - local.get $2 + local.tee $21 + local.get $3 i32.load - local.tee $5 - local.tee $0 + local.tee $22 i32.const 20 i32.sub - local.tee $12 + local.tee $23 i32.load i32.const -4 i32.and @@ -6612,74 +6606,67 @@ i32.sub i32.le_u if - local.get $12 - local.get $13 + local.get $23 + local.get $21 i32.store offset=16 + local.get $22 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $13 - local.get $12 + local.get $21 + local.get $23 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 - local.get $13 - local.get $12 + local.tee $24 + local.get $22 + local.get $21 + local.get $23 i32.load offset=16 - local.tee $0 - local.get $0 - local.get $13 - i32.gt_u + local.tee $23 + local.get $21 + local.get $23 + i32.lt_u select call $~lib/memory/memory.copy - local.get $1 - local.set $0 + local.get $24 end - local.get $0 - local.get $6 - i32.add - local.get $13 - local.get $6 - i32.sub - call $~lib/memory/memory.fill - local.get $0 - local.get $5 + local.tee $23 + local.get $22 i32.ne if - local.get $2 - local.get $0 + local.get $3 + local.get $23 i32.store - local.get $2 - local.get $0 + local.get $3 + local.get $23 i32.store offset=4 - local.get $0 + local.get $23 if - local.get $2 - local.get $0 + local.get $3 + local.get $23 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end - local.get $2 - local.get $13 + local.get $3 + local.get $21 i32.store offset=8 end - local.get $2 + local.get $3 i32.load offset=4 - local.get $8 + local.get $7 i32.const 2 i32.shl i32.add - local.get $9 + local.get $6 i32.store - local.get $2 - local.get $7 + local.get $3 + local.get $8 i32.store offset=12 end - local.get $23 + local.get $18 i32.const 1 i32.add - local.set $23 + local.set $18 br $for-loop|045 end end @@ -6687,10 +6674,10 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $3 + local.get $5 + local.get $2 i32.store offset=24 - local.get $3 + local.get $2 i32.load offset=12 i32.const 2 i32.ne @@ -6702,7 +6689,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6715,7 +6702,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6731,8 +6718,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3344 i32.store offset=12 - local.get $4 - local.tee $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6741,34 +6727,34 @@ local.set $2 loop $for-loop|076 local.get $2 - local.get $22 + local.get $17 i32.gt_s if - local.get $22 + local.get $17 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.set $1 + local.set $3 i32.const 4 global.set $~argumentsLength - local.get $15 - local.get $1 - local.get $22 + local.get $10 + local.get $3 + local.get $17 local.get $0 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $15 - local.get $22 + local.set $10 + local.get $17 i32.const 1 i32.add - local.set $22 + local.set $17 br $for-loop|076 end end - local.get $15 + local.get $10 i32.const 6 i32.ne if @@ -6782,7 +6768,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3376 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6790,13 +6776,13 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $8 loop $for-loop|080 - local.get $1 + local.get $8 i32.const 0 i32.ge_s if - local.get $1 + local.get $8 i32.const 2 i32.shl local.get $0 @@ -6805,22 +6791,22 @@ local.set $2 i32.const 4 global.set $~argumentsLength - local.get $14 + local.get $9 local.get $2 - local.get $1 + local.get $8 local.get $0 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $14 - local.get $1 + local.set $9 + local.get $8 i32.const 1 i32.sub - local.set $1 + local.set $8 br $for-loop|080 end end - local.get $14 + local.get $9 i32.const 6 i32.ne if @@ -6835,7 +6821,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3408 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6844,31 +6830,31 @@ local.set $2 loop $for-loop|084 local.get $2 - local.get $21 + local.get $16 i32.gt_s if - local.get $21 + local.get $16 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 - local.get $21 + local.get $3 + local.get $16 local.get $0 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#some drop - local.get $21 + local.get $16 i32.const 1 i32.add - local.set $21 + local.set $16 br $for-loop|084 end end @@ -6887,7 +6873,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3440 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6896,31 +6882,31 @@ local.set $2 loop $for-loop|089 local.get $2 - local.get $20 + local.get $15 i32.gt_s if - local.get $20 + local.get $15 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 - local.get $20 + local.get $3 + local.get $15 local.get $0 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#some86 drop - local.get $20 + local.get $15 i32.const 1 i32.add - local.set $20 + local.set $15 br $for-loop|089 end end @@ -6938,7 +6924,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3472 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6947,21 +6933,21 @@ local.set $2 loop $for-loop|093 local.get $2 - local.get $19 + local.get $14 i32.gt_s if - local.get $19 + local.get $14 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 - local.get $19 + local.get $3 + local.get $14 local.get $0 i32.const 3472 i32.load @@ -6969,10 +6955,10 @@ i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#every drop - local.get $19 + local.get $14 i32.const 1 i32.add - local.set $19 + local.set $14 br $for-loop|093 end end @@ -6991,7 +6977,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3504 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -7000,21 +6986,21 @@ local.set $2 loop $for-loop|098 local.get $2 - local.get $18 + local.get $13 i32.gt_s if - local.get $18 + local.get $13 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.set $1 + local.set $3 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 - local.get $18 + local.get $3 + local.get $13 local.get $0 i32.const 3504 i32.load @@ -7022,10 +7008,10 @@ i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#every95 drop - local.get $18 + local.get $13 i32.const 1 i32.add - local.set $18 + local.set $13 br $for-loop|098 end end @@ -7042,7 +7028,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3536 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -7052,10 +7038,10 @@ block $__inlined_func$~lib/staticarray/StaticArray#findIndex loop $for-loop|0102 local.get $2 - local.get $25 + local.get $20 i32.gt_s if - local.get $25 + local.get $20 i32.const 2 i32.shl local.get $0 @@ -7063,23 +7049,23 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $25 + local.get $20 local.get $0 i32.const 3536 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex - local.get $25 + local.get $20 i32.const 1 i32.add - local.set $25 + local.set $20 br $for-loop|0102 end end i32.const -1 - local.set $25 + local.set $20 end - local.get $25 + local.get $20 i32.const 1 i32.ne if @@ -7093,7 +7079,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3568 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -7103,10 +7089,10 @@ block $__inlined_func$~lib/staticarray/StaticArray#findIndex104 loop $for-loop|0107 local.get $2 - local.get $24 + local.get $19 i32.gt_s if - local.get $24 + local.get $19 i32.const 2 i32.shl local.get $0 @@ -7114,23 +7100,23 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $24 + local.get $19 local.get $0 i32.const 3568 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex104 - local.get $24 + local.get $19 i32.const 1 i32.add - local.set $24 + local.set $19 br $for-loop|0107 end end i32.const -1 - local.set $24 + local.set $19 end - local.get $24 + local.get $19 i32.const -1 i32.ne if @@ -7144,7 +7130,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -7152,14 +7138,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $8 block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex loop $for-loop|0111 - local.get $1 + local.get $8 i32.const 0 i32.ge_s if - local.get $1 + local.get $8 i32.const 2 i32.shl local.get $0 @@ -7167,23 +7153,23 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $8 local.get $0 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - local.get $1 + local.get $8 i32.const 1 i32.sub - local.set $1 + local.set $8 br $for-loop|0111 end end i32.const -1 - local.set $1 + local.set $8 end - local.get $1 + local.get $8 i32.const 1 i32.ne if @@ -7197,7 +7183,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -7205,38 +7191,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $2 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex113 loop $for-loop|0116 - local.get $2 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $2 local.get $0 + local.get $1 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex113 - local.get $2 + local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $0 br $for-loop|0116 end end i32.const -1 - local.set $2 + local.set $0 end - local.get $2 + local.get $0 i32.const -1 i32.ne if @@ -7251,16 +7237,16 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 3664 i32.const 16 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=28 i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7281,25 +7267,25 @@ unreachable end i32.const 3712 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 3712 i32.store end - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -7310,7 +7296,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7323,7 +7309,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7336,7 +7322,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7587,7 +7573,7 @@ if i32.const 1680 i32.const 1152 - i32.const 43 + i32.const 44 i32.const 60 call $~lib/builtins/abort unreachable @@ -7780,7 +7766,7 @@ if i32.const 1088 i32.const 1152 - i32.const 115 + i32.const 118 i32.const 41 call $~lib/builtins/abort unreachable @@ -7799,7 +7785,7 @@ if i32.const 2176 i32.const 1152 - i32.const 119 + i32.const 122 i32.const 40 call $~lib/builtins/abort unreachable @@ -7855,7 +7841,7 @@ if i32.const 1680 i32.const 1152 - i32.const 230 + i32.const 233 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index d60707ed56..3153dd3c4a 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -16,6 +16,9 @@ (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/staticarray/arr1 i32 (i32.const 32)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $std/staticarray/arr2 i32 (i32.const 256)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -31,6 +34,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $std/staticarray/maxVal (mut i32) (i32.const 0)) @@ -129,7 +133,7 @@ if i32.const 64 i32.const 128 - i32.const 115 + i32.const 118 i32.const 41 call $~lib/builtins/abort unreachable @@ -164,7 +168,7 @@ if i32.const 64 i32.const 128 - i32.const 130 + i32.const 133 i32.const 41 call $~lib/builtins/abort unreachable @@ -3847,7 +3851,7 @@ if i32.const 64 i32.const 752 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4812,7 +4816,7 @@ if i32.const 656 i32.const 752 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -4856,14 +4860,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -8751,7 +8751,7 @@ if i32.const 656 i32.const 128 - i32.const 90 + i32.const 91 i32.const 60 call $~lib/builtins/abort unreachable @@ -8766,10 +8766,10 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $3 local.set $4 global.get $~lib/memory/__stack_pointer @@ -8910,7 +8910,7 @@ if i32.const 656 i32.const 128 - i32.const 43 + i32.const 44 i32.const 60 call $~lib/builtins/abort unreachable @@ -9106,7 +9106,7 @@ if i32.const 64 i32.const 128 - i32.const 115 + i32.const 118 i32.const 41 call $~lib/builtins/abort unreachable @@ -9130,7 +9130,7 @@ if i32.const 1152 i32.const 128 - i32.const 119 + i32.const 122 i32.const 40 call $~lib/builtins/abort unreachable @@ -9188,7 +9188,7 @@ if i32.const 656 i32.const 128 - i32.const 230 + i32.const 233 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 69c093d509..b6f0e112cf 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -18,6 +18,9 @@ (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))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 9b35842eba..b5d8c553e8 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -11,6 +11,9 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string-encoding/str (mut i32) (i32.const 32)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index de9d16b7bf..98f5851467 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -4,8 +4,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) @@ -2236,182 +2236,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2480,7 +2304,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -2495,7 +2319,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -2508,7 +2332,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -2516,7 +2340,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -2527,16 +2351,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -2547,16 +2371,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -2564,7 +2388,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -2572,8 +2396,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -2590,7 +2414,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -2600,13 +2424,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2619,40 +2443,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -2712,10 +2536,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/string/String#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5925,7 +5921,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $0 i32.load offset=12 local.tee $3 @@ -5934,7 +5929,7 @@ local.tee $2 local.get $0 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 2 i32.shr_u i32.gt_u @@ -5945,24 +5940,24 @@ if i32.const 13648 i32.const 15248 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable end local.get $0 i32.load - local.tee $5 - local.get $4 + local.tee $4 + local.get $5 i32.const 1 i32.shl - local.tee $6 + local.tee $5 i32.const 1073741820 - local.get $6 + local.get $5 i32.const 1073741820 i32.lt_u select - local.tee $6 + local.tee $5 local.get $2 i32.const 8 local.get $2 @@ -5971,40 +5966,33 @@ select i32.const 2 i32.shl - local.tee $7 + local.tee $6 + local.get $5 local.get $6 - local.get $7 i32.gt_u select - local.tee $6 + local.tee $5 call $~lib/rt/itcms/__renew - local.tee $7 - local.get $4 - i32.add - local.get $6 + local.tee $6 local.get $4 - i32.sub - call $~lib/memory/memory.fill - local.get $5 - local.get $7 i32.ne if local.get $0 - local.get $7 + local.get $6 i32.store local.get $0 - local.get $7 + local.get $6 i32.store offset=4 - local.get $7 + local.get $6 if local.get $0 - local.get $7 + local.get $6 i32.const 0 call $byn-split-outlined-A$~lib/rt/itcms/__link end end local.get $0 - local.get $6 + local.get $5 i32.store offset=8 end local.get $0 @@ -23599,7 +23587,7 @@ if i32.const 1264 i32.const 15248 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -23619,7 +23607,7 @@ if i32.const 15296 i32.const 15248 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 7ec58f8860..4c539bfd82 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -25,6 +25,9 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 32)) (global $std/string/nullStr (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -49,6 +52,7 @@ (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) (global $std/string/Ox1p_1073 f64 (f64.const 1e-323)) (global $std/string/Ox1_0000000000001p_1022 f64 (f64.const 2.225073858507202e-308)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) @@ -7276,7 +7280,7 @@ if i32.const 12624 i32.const 14224 - i32.const 18 + i32.const 19 i32.const 48 call $~lib/builtins/abort unreachable @@ -7320,14 +7324,10 @@ local.get $6 call $~lib/rt/itcms/__renew local.set $8 - local.get $8 - local.get $4 - i32.add - i32.const 0 - local.get $6 - local.get $4 - i32.sub - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $8 local.get $5 i32.ne @@ -27000,7 +27000,7 @@ if i32.const 240 i32.const 14224 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -27025,7 +27025,7 @@ if i32.const 14272 i32.const 14224 - i32.const 111 + i32.const 118 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 61749a24f2..30c8aa5278 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1295,182 +1295,6 @@ end end ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $0 - local.get $1 - local.get $2 - i32.sub - i32.const -4 - i32.and - local.tee $1 - i32.add - local.tee $2 - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - i32.const 0 - i32.store offset=24 - local.get $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $while-continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1539,7 +1363,7 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $4 + local.set $5 local.get $0 i32.const 16 i32.add @@ -1554,7 +1378,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 12 local.get $2 i32.const 19 @@ -1567,7 +1391,7 @@ i32.const 12 i32.le_u select - local.tee $5 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1575,7 +1399,7 @@ memory.size local.tee $2 i32.const 4 - local.get $4 + local.get $5 i32.load offset=1568 local.get $2 i32.const 16 @@ -1586,16 +1410,16 @@ i32.shl i32.const 1 i32.const 27 - local.get $5 + local.get $3 i32.clz i32.sub i32.shl i32.const 1 i32.sub - local.get $5 + local.get $3 i32.add - local.get $5 - local.get $5 + local.get $3 + local.get $3 i32.const 536870910 i32.lt_u select @@ -1606,16 +1430,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1623,7 +1447,7 @@ unreachable end end - local.get $4 + local.get $5 local.get $2 i32.const 16 i32.shl @@ -1631,8 +1455,8 @@ i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $4 local.get $5 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz @@ -1649,7 +1473,7 @@ i32.load i32.const -4 i32.and - local.get $5 + local.get $3 i32.lt_u if i32.const 0 @@ -1659,13 +1483,13 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $3 - local.get $5 + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1678,40 +1502,40 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const -4 i32.and - local.get $5 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $3 + local.get $6 i32.const 2 i32.and - local.get $5 + local.get $3 i32.or i32.store - local.get $5 + local.get $3 local.get $2 i32.const 4 i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $4 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $3 + local.get $6 i32.const -2 i32.and i32.store @@ -1771,10 +1595,182 @@ local.get $2 i32.const 20 i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 + local.tee $2 + local.set $1 + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=1 + local.get $1 + i32.const 0 + i32.store8 offset=2 + local.get $3 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store8 offset=3 + local.get $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + local.get $1 + i32.sub + i32.const 3 + i32.and + local.tee $3 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.get $3 + i32.sub + i32.const -4 + i32.and + local.tee $0 + i32.add + local.tee $3 + i32.const 4 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $3 + i32.const 12 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $0 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + i32.const 0 + i32.store offset=24 + local.get $3 + i32.const 28 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 24 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.const 0 + i32.store + local.get $3 + i32.const 16 + i32.sub + i32.const 0 + i32.store + local.get $1 + local.get $1 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $3 + i32.add + local.set $1 + local.get $0 + local.get $3 + i32.sub + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 32 + i32.ge_u + if + local.get $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i64.const 0 + i64.store offset=16 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 32 + i32.sub + local.set $0 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) @@ -4779,7 +4775,6 @@ global.set $~lib/memory/__stack_pointer ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4804,7 +4799,7 @@ if i32.const 1536 i32.const 1584 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -4813,16 +4808,13 @@ local.get $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $0 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) global.get $~lib/rt/itcms/white diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 5acb40dd14..b41fcb2bfb 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -22,10 +22,14 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/symbol/idToString (mut i32) (i32.const 0)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) (global $std/symbol/sym4 (mut i32) (i32.const 0)) @@ -5691,7 +5695,7 @@ if i32.const 512 i32.const 560 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -5702,10 +5706,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index bd3f8b1c8f..fe2e03facc 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -4886,7 +4886,7 @@ if i32.const 1360 i32.const 1760 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -4919,7 +4919,7 @@ if i32.const 1360 i32.const 1760 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -63559,7 +63559,7 @@ if i32.const 1056 i32.const 1104 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -63573,10 +63573,6 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store offset=4 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill local.get $0 local.get $2 i32.store @@ -65752,7 +65748,6 @@ local.get $1 ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -65777,7 +65772,7 @@ if i32.const 1056 i32.const 1104 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -65786,17 +65781,13 @@ local.get $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index bf2c7a5a80..a59cf9b188 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -64,6 +64,9 @@ (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (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)) @@ -76,6 +79,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/ASC_RUNTIME i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) @@ -5974,7 +5978,7 @@ if i32.const 336 i32.const 736 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -6149,7 +6153,7 @@ if i32.const 336 i32.const 736 - i32.const 107 + i32.const 114 i32.const 42 call $~lib/builtins/abort unreachable @@ -62639,7 +62643,7 @@ if i32.const 32 i32.const 80 - i32.const 18 + i32.const 19 i32.const 57 call $~lib/builtins/abort unreachable @@ -62653,10 +62657,10 @@ call $~lib/rt/itcms/__new local.tee $3 i32.store offset=4 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $0 local.get $3 call $~lib/arraybuffer/ArrayBufferView#set:buffer @@ -69675,7 +69679,7 @@ if i32.const 32 i32.const 80 - i32.const 49 + i32.const 52 i32.const 43 call $~lib/builtins/abort unreachable @@ -69686,10 +69690,10 @@ call $~lib/rt/itcms/__new local.tee $2 i32.store - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index 86fca127d2..05f634cf74 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.untouched.wat @@ -10,6 +10,9 @@ (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/util/uri/URL_UNSAFE i32 (i32.const 44)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index 01fe2657f3..c27fd26d61 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -17,6 +17,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index 324a967b2c..0190703438 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.untouched.wat @@ -17,6 +17,9 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat index 61aae9f920..06f4c2c127 100644 --- a/tests/compiler/throw.untouched.wat +++ b/tests/compiler/throw.untouched.wat @@ -14,6 +14,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 422b7142f8..63390e1779 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -11,6 +11,9 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $typeof/SomeNamespace.a i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $typeof/b (mut i32) (i32.const 1)) (global $typeof/i (mut i32) (i32.const 1)) diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index 20215aa66f..f8c72e9010 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -8,6 +8,9 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 220)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16604)) diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index 13b2f46cb4..bf82ac0d78 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -14,6 +14,9 @@ (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 024fa87b47..cea58d34f9 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -18,6 +18,9 @@ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) From b4dfc444111ff440a68b3ec8d806371f69644f7b Mon Sep 17 00:00:00 2001 From: Max Graey Date: Mon, 8 Nov 2021 23:26:15 +0200 Subject: [PATCH 11/19] Update ts-node to 10.4.0 (#2123) --- .github/workflows/test.yml | 6 + cli/asc.js | 29 +++- index.js | 8 +- package-lock.json | 303 +++++++++++++++++++++++++++---------- package.json | 8 +- scripts/prepublish.js | 88 ++++++----- src/tsconfig.json | 5 + tests/decompiler.js | 6 +- tests/parser.js | 6 +- tests/tokenizer.js | 8 +- tests/util-path.js | 8 +- 11 files changed, 334 insertions(+), 141 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 649ae45cb5..aee2de710e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,6 +42,8 @@ jobs: run: npm test - name: Build distribution files run: npm run build + - name: Update entry file + run: npm run prepare-ci - name: Test distribution run: npm test - name: Test browser build @@ -63,6 +65,8 @@ jobs: run: npm test - name: Build distribution files run: npm run build + - name: Update entry file + run: npm run prepare-ci - name: Test distribution run: npm test - name: Test browser build @@ -84,6 +88,8 @@ jobs: run: npm test - name: Build distribution files run: npm run build + - name: Update entry file + run: npm run prepare-ci - name: Test distribution run: npm test - name: Test browser build diff --git a/cli/asc.js b/cli/asc.js index 2fbec18afd..3c47266c2a 100644 --- a/cli/asc.js +++ b/cli/asc.js @@ -80,7 +80,7 @@ if (process.removeAllListeners) { // Use distribution files if present, otherwise run the sources directly. function loadAssemblyScriptJS() { - var exports; + var exports, tsNode; try { // note that this case will always trigger in recent node.js versions for typical installs // see: https://nodejs.org/api/packages.html#packages_self_referencing_a_package_using_its_name @@ -90,18 +90,33 @@ function loadAssemblyScriptJS() { exports = dynrequire("../dist/assemblyscript.js"); } catch (e) { try { // `asc` on the command line without dist files (unnecessary in recent node) - dynrequire("ts-node").register({ + tsNode = dynrequire("ts-node"); + tsNode.register({ project: path.join(__dirname, "..", "src", "tsconfig.json"), + typeCheck: false, + transpileOnly: true, + compilerHost: true, + files: true, skipIgnore: true, - compilerOptions: { target: "ES2016" } + moduleTypes: { + "../src/glue/js/*": "cjs" + }, + compilerOptions: { + module: "esnext", + target: "es2017" + } }); dynrequire("../src/glue/js"); exports = dynrequire("../src"); } catch (e_ts) { - try { // `require("dist/asc.js")` in explicit browser tests - exports = dynrequire("./assemblyscript"); - } catch (e) { - throw Error(`${e_ts.stack}\n---\n${e.stack}`); + if (!tsNode || !(e_ts instanceof tsNode.TSError)) { + try { // `require("dist/asc.js")` in explicit browser tests + exports = dynrequire("./assemblyscript"); + } catch (e) { + throw Error(`${e_ts.stack}\n---\n${e.stack}`); + } + } else { + throw e_ts; } } } diff --git a/index.js b/index.js index e8e52df9a7..a2ab787e8e 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,11 @@ -try { require("source-map-support").install(); } catch (e) { /* nop */ } require("ts-node").register({ project: require("path").join(__dirname, "src", "tsconfig.json"), - skipIgnore: true + compilerHost: true, + skipIgnore: true, + files: true, + compilerOptions: { + removeComments: false + } }); require("./src/glue/js"); module.exports = require("./src"); diff --git a/package-lock.json b/package-lock.json index 879adff5f7..c6449395b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,22 +12,23 @@ "binaryen": "102.0.0-nightly.20211028", "long": "^4.0.0", "source-map-support": "^0.5.20", - "ts-node": "^6.2.0" + "ts-node": "^10.4.0" }, "bin": { "asc": "bin/asc", "asinit": "bin/asinit" }, "devDependencies": { - "@types/node": "^16.11.4", + "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "diff": "^5.0.0", "eslint": "^7.32.0", "glob": "^7.2.0", + "mkdirp": "^1.0.4", "physical-cpu-count": "^2.0.0", "ts-loader": "^9.2.6", - "ts-node": "^6.2.0", + "ts-node": "^10.4.0", "typescript": "~4.4.4", "webpack": "^5.61.0", "webpack-cli": "^4.9.1" @@ -134,6 +135,27 @@ "node": ">=4" } }, + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", @@ -218,6 +240,30 @@ "node": ">= 8" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "node_modules/@types/eslint": { "version": "7.2.12", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.12.tgz", @@ -251,9 +297,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", - "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==", + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { @@ -655,6 +701,15 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -713,6 +768,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -731,15 +792,6 @@ "node": ">=8" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -907,6 +959,12 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1919,22 +1977,16 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/ms": { @@ -2685,31 +2737,62 @@ } }, "node_modules/ts-node": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz", - "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", "dev": true, "dependencies": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" + "yn": "3.1.1" }, "bin": { - "ts-node": "dist/bin.js" + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=4.2.0" + "node": ">=0.4.0" } }, "node_modules/ts-node/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -2992,12 +3075,12 @@ "dev": true }, "node_modules/yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/yocto-queue": { @@ -3098,6 +3181,21 @@ } } }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, "@discoveryjs/json-ext": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", @@ -3164,6 +3262,30 @@ "fastq": "^1.6.0" } }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "@types/eslint": { "version": "7.2.12", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.12.tgz", @@ -3197,9 +3319,9 @@ "dev": true }, "@types/node": { - "version": "16.11.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", - "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==", + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, "@typescript-eslint/eslint-plugin": { @@ -3498,6 +3620,12 @@ "dev": true, "requires": {} }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3538,6 +3666,12 @@ "color-convert": "^2.0.1" } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -3553,12 +3687,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3685,6 +3813,12 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4460,20 +4594,11 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "ms": { "version": "2.1.2", @@ -4990,25 +5115,35 @@ } }, "ts-node": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz", - "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", "dev": true, "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" + "yn": "3.1.1" }, "dependencies": { + "acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true + }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true } } @@ -5205,9 +5340,9 @@ "dev": true }, "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, "yocto-queue": { diff --git a/package.json b/package.json index 69d2ed22e8..0769b1e757 100644 --- a/package.json +++ b/package.json @@ -24,18 +24,19 @@ "binaryen": "102.0.0-nightly.20211028", "long": "^4.0.0", "source-map-support": "^0.5.20", - "ts-node": "^6.2.0" + "ts-node": "^10.4.0" }, "devDependencies": { - "@types/node": "^16.11.4", + "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "diff": "^5.0.0", "eslint": "^7.32.0", "glob": "^7.2.0", + "mkdirp": "^1.0.4", "physical-cpu-count": "^2.0.0", "ts-loader": "^9.2.6", - "ts-node": "^6.2.0", + "ts-node": "^10.4.0", "typescript": "~4.4.4", "webpack": "^5.61.0", "webpack-cli": "^4.9.1" @@ -84,6 +85,7 @@ "make": "npm run clean && npm test && npm run build && npm test", "all": "npm run check && npm run make", "docs": "typedoc --tsconfig tsconfig-docs.json --mode modules --name \"AssemblyScript Compiler API\" --out ./docs/api --ignoreCompilerErrors --excludeNotExported --excludePrivate --excludeExternals --exclude **/std/** --includeDeclarations --readme src/README.md", + "prepare-ci": "node scripts/prepublish --prepare-for-ci", "prepublishOnly": "node scripts/prepublish", "postpublish": "node scripts/postpublish", "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", diff --git a/scripts/prepublish.js b/scripts/prepublish.js index d18b7c373f..62217dbf54 100644 --- a/scripts/prepublish.js +++ b/scripts/prepublish.js @@ -5,47 +5,51 @@ const path = require("path"); const pkg = require("../package.json"); const devFiles = require("./postpublish-files.json"); -if (!pkg.releaseFiles) { - console.log("Package has already been updated"); - return; -} +var isCI = process.argv[2] === '--prepare-for-ci'; + +if (!isCI) { + if (!pkg.releaseFiles) { + console.log("Package has already been updated"); + return; + } + + console.log("Backing up development files ..."); + + devFiles.forEach(originalName => { + const backupName = originalName + ".backup"; + console.log("- " + originalName + " -> " + backupName); + fs.copyFileSync( + path.join(__dirname, "..", originalName), + path.join(__dirname, "..", backupName) + ); + }); -console.log("Backing up development files ..."); - -devFiles.forEach(originalName => { - const backupName = originalName + ".backup"; - console.log("- " + originalName + " -> " + backupName); - fs.copyFileSync( - path.join(__dirname, "..", originalName), - path.join(__dirname, "..", backupName) - ); -}); - -console.log("Updating package.json ..."); - -// Stuff we don't need in release -Object.keys(pkg.devDependencies).forEach(dep => delete pkg.dependencies[dep]); -delete pkg.devDependencies; -delete pkg.scripts; - -// Stuff we want in release -pkg.files = pkg.releaseFiles; -delete pkg.releaseFiles; - -// Copy contributors from NOTICE to .contributors -const notice = fs.readFileSync(path.join(__dirname, "..", "NOTICE"), "utf8"); -const noticeRange = ["dcode.io>", "Portions of this software"]; -const posStart = notice.indexOf(noticeRange[0]); -const posEnd = notice.indexOf(noticeRange[1], posStart); -if (posStart < 0 || posEnd < 0) throw Error("unexpected NOTICE format"); -pkg.contributors = []; -for (let entry of notice.substring(posStart + noticeRange[0].length, posEnd).trim().matchAll(/^\* ([^<\n]+(?: <([^>\n]+)>))/mg)) { - pkg.contributors.push(entry[1]); + console.log("Updating package.json ..."); + + // Stuff we don't need in release + Object.keys(pkg.devDependencies).forEach(dep => delete pkg.dependencies[dep]); + delete pkg.devDependencies; + delete pkg.scripts; + + // Stuff we want in release + pkg.files = pkg.releaseFiles; + delete pkg.releaseFiles; + + // Copy contributors from NOTICE to .contributors + const notice = fs.readFileSync(path.join(__dirname, "..", "NOTICE"), "utf8"); + const noticeRange = ["dcode.io>", "Portions of this software"]; + const posStart = notice.indexOf(noticeRange[0]); + const posEnd = notice.indexOf(noticeRange[1], posStart); + if (posStart < 0 || posEnd < 0) throw Error("unexpected NOTICE format"); + pkg.contributors = []; + for (let entry of notice.substring(posStart + noticeRange[0].length, posEnd).trim().matchAll(/^\* ([^<\n]+(?: <([^>\n]+)>))/mg)) { + pkg.contributors.push(entry[1]); + } + if (!pkg.contributors.length) throw Error("missing contributors"); + fs.writeFileSync(path.join(__dirname, "..", "package.json"), [ + JSON.stringify(pkg, null, 2), '\n' + ].join("")); } -if (!pkg.contributors.length) throw Error("missing contributors"); -fs.writeFileSync(path.join(__dirname, "..", "package.json"), [ - JSON.stringify(pkg, null, 2), '\n' -].join("")); console.log("Copying index.release.js -> index.js ..."); fs.copyFileSync( @@ -59,5 +63,7 @@ fs.copyFileSync( path.join(__dirname, "..", "index.d.ts") ); -// We are going to use these immediately, so, to be sure: -setTimeout(() => console.log("OK"), 2000); +if (!isCI) { + // We are going to use these immediately, so, to be sure: + setTimeout(() => console.log("OK"), 2000); +} diff --git a/src/tsconfig.json b/src/tsconfig.json index c368fea916..033f601ce4 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -2,8 +2,10 @@ "extends": "../std/portable.json", "compilerOptions": { "outDir": "../out", + "types" : ["node"], "allowJs": false, "sourceMap": true, + "skipLibCheck": true, "target": "esnext", "strict": true }, @@ -11,6 +13,9 @@ "./**/*.ts" ], "exclude": [ + "../**/node_modules/", + "../tests/**", + "../lib/**", "./glue/wasm/**" ] } diff --git a/tests/decompiler.js b/tests/decompiler.js index e8ca8922bf..3d22d199d0 100644 --- a/tests/decompiler.js +++ b/tests/decompiler.js @@ -1,6 +1,10 @@ var binaryen = global.binaryen = require("../lib/binaryen"); -require("ts-node").register({ project: require("path").join(__dirname, "..", "src", "tsconfig.json") }); +require("ts-node").register({ + project: require("path").join(__dirname, "..", "src", "tsconfig.json"), + compilerHost: true, + files: true +}); require("../src/glue/js"); var mod = new binaryen.Module(); diff --git a/tests/parser.js b/tests/parser.js index c17aa82862..b02bc7556a 100644 --- a/tests/parser.js +++ b/tests/parser.js @@ -49,7 +49,11 @@ if (argv.length) { } } -require("ts-node").register({ project: path.join(__dirname, "..", "src", "tsconfig.json") }); +require("ts-node").register({ + project: path.join(__dirname, "..", "src", "tsconfig.json"), + compilerHost: true, + files: true +}); require("../src/glue/js"); const { Program, Options } = require("../src"); diff --git a/tests/tokenizer.js b/tests/tokenizer.js index 96004617ca..d4c43f4b4a 100644 --- a/tests/tokenizer.js +++ b/tests/tokenizer.js @@ -1,7 +1,13 @@ const fs = require("fs"); const path = require("path"); -require("ts-node").register({ project: path.join(__dirname, "..", "src", "tsconfig.json") }); +require("ts-node").register({ + project: path.join(__dirname, "..", "src", "tsconfig.json"), + typeCheck: false, + transpileOnly: true, + compilerHost: true, + files: true, +}); require("../src/glue/js"); const { Tokenizer, Token } = require("../src/tokenizer"); diff --git a/tests/util-path.js b/tests/util-path.js index d3324f2dce..e3d5e9319f 100644 --- a/tests/util-path.js +++ b/tests/util-path.js @@ -1,7 +1,13 @@ const path = require("path"); const assert = require("assert"); -require("ts-node").register({ project: path.join(__dirname, "..", "src", "tsconfig.json") }); +require("ts-node").register({ + project: path.join(__dirname, "..", "src", "tsconfig.json"), + typeCheck: false, + transpileOnly: true, + compilerHost: true, + files: true +}); require("../src/glue/js"); const { normalize, resolve } = require("../src/util/path"); From 02a3e754ca9a9b99ac36c3e1ade258e8079ebba4 Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 8 Nov 2021 23:26:49 +0100 Subject: [PATCH 12/19] Update dependencies (#2128) --- .eslintrc.js | 7 +- package-lock.json | 1717 +++++++++++---------------------- package.json | 8 +- std/portable/index.js | 2 +- tests/compiler/issues/1699.ts | 2 +- 5 files changed, 601 insertions(+), 1135 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 2f5dadc521..24129405b9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -70,6 +70,9 @@ module.exports = { // Quite common in scenarios where an iteration starts at `current = this`. "@typescript-eslint/no-this-alias": "off", + // Interferes with tests and 64-bit literals + "@typescript-eslint/no-loss-of-precision": "off", + // Disabled here, but enabled again for JavaScript files. "no-unused-vars": "off", @@ -106,7 +109,9 @@ module.exports = { "args": "none", "ignoreRestSiblings": false } - ] + ], + + "@typescript-eslint/no-loss-of-precision": "error", } }, diff --git a/package-lock.json b/package-lock.json index c6449395b7..5b72ca0360 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,11 @@ "requires": true, "packages": { "": { - "name": "assemblyscript", "version": "0.0.0", "license": "Apache-2.0", "dependencies": { "binaryen": "102.0.0-nightly.20211028", - "long": "^4.0.0", + "long": "^5.1.0", "source-map-support": "^0.5.20", "ts-node": "^10.4.0" }, @@ -20,10 +19,10 @@ }, "devDependencies": { "@types/node": "^16.11.6", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", "diff": "^5.0.0", - "eslint": "^7.32.0", + "eslint": "^8.2.0", "glob": "^7.2.0", "mkdirp": "^1.0.4", "physical-cpu-count": "^2.0.0", @@ -38,108 +37,10 @@ "url": "https://opencollective.com/assemblyscript" } }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "node_modules/@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@cspotcode/source-map-consumer": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, "engines": { "node": ">= 12" } @@ -148,7 +49,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, "dependencies": { "@cspotcode/source-map-consumer": "0.8.0" }, @@ -157,38 +57,47 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", "dev": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", + "debug": "^4.3.2", + "espree": "^9.0.0", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", @@ -200,9 +109,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -243,31 +152,27 @@ "node_modules/@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" }, "node_modules/@tsconfig/node12": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" }, "node_modules/@tsconfig/node14": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" }, "node_modules/@tsconfig/node16": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" }, "node_modules/@types/eslint": { - "version": "7.2.12", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.12.tgz", - "integrity": "sha512-HjikV/jX6e0Pg4DcB+rtOBKSrG6w5IaxWpmi3efL/eLxMz5lZTK+W1DKERrX5a+mNzL78axfsDNXu7JHFP4uLg==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", + "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", "dev": true, "dependencies": { "@types/estree": "*", @@ -275,9 +180,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -297,36 +202,35 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", - "dev": true + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz", + "integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", + "@typescript-eslint/experimental-utils": "5.3.1", + "@typescript-eslint/scope-manager": "5.3.1", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -334,30 +238,21 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz", + "integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -367,44 +262,26 @@ "eslint": "*" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz", + "integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", + "debug": "^4.3.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -413,16 +290,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz", + "integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -430,12 +307,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz", + "integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==", "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -443,21 +320,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz", + "integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -470,16 +347,16 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz", + "integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.3.1", + "eslint-visitor-keys": "^3.0.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -681,10 +558,9 @@ "dev": true }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", "bin": { "acorn": "bin/acorn" }, @@ -692,6 +568,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -705,7 +590,6 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -771,17 +655,13 @@ "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-union": { "version": "2.1.0", @@ -792,15 +672,6 @@ "node": ">=8" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -838,16 +709,16 @@ } }, "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" @@ -861,9 +732,9 @@ } }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/callsites": { "version": "3.1.0", @@ -875,9 +746,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001230", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", - "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true, "funding": { "type": "opencollective", @@ -885,9 +756,9 @@ } }, "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -942,9 +813,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, "node_modules/commander": { @@ -962,8 +833,7 @@ "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -980,9 +850,9 @@ } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -997,9 +867,9 @@ } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "node_modules/diff": { @@ -1036,15 +906,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.740", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.740.tgz", - "integrity": "sha512-Mi2m55JrX2BFbNZGKYR+2ItcGnR4O5HhrvgoRRyZQlaMGQULqDhoGkLWHzJoshSzi7k1PUofxcDbNhlFrDZNhg==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "1.3.891", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.891.tgz", + "integrity": "sha512-3cpwR82QkIS01CN/dup/4Yr3BiOiRLlZlcAFn/5FbNCunMO9ojqDgEP9JEo1QNLflu3pEnPWve50gHOEKc7r6w==", "dev": true }, "node_modules/enhanced-resolve": { @@ -1112,37 +976,36 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", + "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^6.0.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -1150,11 +1013,10 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -1162,7 +1024,7 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1182,72 +1044,84 @@ } }, "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", + "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "engines": { + "node": ">= 4" + } + }, + "node_modules/espree": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", + "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.0.0" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esquery": { @@ -1263,9 +1137,9 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -1284,9 +1158,9 @@ } }, "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -1320,9 +1194,9 @@ } }, "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -1364,6 +1238,18 @@ "node": ">=8" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1442,9 +1328,9 @@ } }, "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, "node_modules/fs.realpath": { @@ -1498,15 +1384,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/glob-to-regexp": { @@ -1516,9 +1402,9 @@ "dev": true }, "node_modules/globals": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", - "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1550,19 +1436,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, "node_modules/has": { @@ -1596,9 +1473,9 @@ } }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -1621,9 +1498,9 @@ } }, "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -1671,9 +1548,9 @@ } }, "node_modules/is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1691,19 +1568,10 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -1734,12 +1602,15 @@ } }, "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/isexe": { @@ -1786,20 +1657,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -1866,28 +1730,16 @@ "node": ">=8" } }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.1.0.tgz", + "integrity": "sha512-eNc10JP6ezXp/qxXZlKS4OHAKNae3je9LUkjmXPDEa+Iidlz0n4nFi/9LT+GOgcayMWhykLoISN+v0THeOiWQQ==" }, "node_modules/lru-cache": { "version": "6.0.0", @@ -1904,8 +1756,7 @@ "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "node_modules/merge-stream": { "version": "2.0.0", @@ -1936,21 +1787,21 @@ } }, "node_modules/mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "dev": true, "dependencies": { - "mime-db": "1.47.0" + "mime-db": "1.50.0" }, "engines": { "node": ">= 0.6" @@ -2008,9 +1859,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/npm-run-path": { @@ -2067,15 +1918,15 @@ } }, "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2093,21 +1944,6 @@ "node": ">=8" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -2177,6 +2013,12 @@ "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", "dev": true }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -2258,9 +2100,9 @@ } }, "node_modules/rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "dependencies": { "resolve": "^1.9.0" @@ -2270,9 +2112,9 @@ } }, "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { "node": ">=8" @@ -2281,15 +2123,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -2477,9 +2310,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "dev": true }, "node_modules/slash": { @@ -2491,23 +2324,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2525,33 +2341,13 @@ "source-map": "^0.6.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -2590,49 +2386,10 @@ "node": ">=8" } }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.5.0.tgz", - "integrity": "sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, "engines": { "node": ">=6" @@ -2656,13 +2413,12 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", "dev": true, "dependencies": { "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", @@ -2740,7 +2496,6 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", - "dev": true, "dependencies": { "@cspotcode/source-map-support": "0.7.0", "@tsconfig/node10": "^1.0.7", @@ -2777,23 +2532,10 @@ } } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, "engines": { "node": ">=0.3.1" } @@ -2847,7 +2589,6 @@ "version": "4.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2885,9 +2626,9 @@ } }, "node_modules/webpack": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", - "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", + "version": "5.62.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.62.1.tgz", + "integrity": "sha512-jNLtnWChS2CMZ7vqWtztv0G6fYB5hz11Zsadp5tE7e4/66zVDj7/KUeQZOsOl8Hz5KrLJH1h2eIDl6AnlyE12Q==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -2974,12 +2715,6 @@ } } }, - "node_modules/webpack-cli/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, "node_modules/webpack-cli/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -2990,9 +2725,9 @@ } }, "node_modules/webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", @@ -3011,27 +2746,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3078,151 +2792,60 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, "engines": { "node": ">=6" } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "@cspotcode/source-map-consumer": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" }, "@cspotcode/source-map-support": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, "requires": { "@cspotcode/source-map-consumer": "0.8.0" } }, "@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", "dev": true }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", + "debug": "^4.3.2", + "espree": "^9.0.0", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } } }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.0", @@ -3231,9 +2854,9 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@nodelib/fs.scandir": { @@ -3265,31 +2888,27 @@ "@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" }, "@tsconfig/node12": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" }, "@tsconfig/node14": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" }, "@tsconfig/node16": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" }, "@types/eslint": { - "version": "7.2.12", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.12.tgz", - "integrity": "sha512-HjikV/jX6e0Pg4DcB+rtOBKSrG6w5IaxWpmi3efL/eLxMz5lZTK+W1DKERrX5a+mNzL78axfsDNXu7JHFP4uLg==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", + "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", "dev": true, "requires": { "@types/estree": "*", @@ -3297,9 +2916,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", "dev": true, "requires": { "@types/eslint": "*", @@ -3319,111 +2938,91 @@ "dev": true }, "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", - "dev": true + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" }, "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz", + "integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", + "@typescript-eslint/experimental-utils": "5.3.1", + "@typescript-eslint/scope-manager": "5.3.1", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } } }, "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz", + "integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - } } }, "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz", + "integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", + "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz", + "integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1" } }, "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz", + "integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz", + "integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" } }, "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz", + "integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.3.1", + "eslint-visitor-keys": "^3.0.0" } }, "@webassemblyjs/ast": { @@ -3608,10 +3207,16 @@ "dev": true }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", @@ -3623,8 +3228,7 @@ "acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" }, "ajv": { "version": "6.12.6", @@ -3669,17 +3273,13 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-union": { "version": "2.1.0", @@ -3687,12 +3287,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3724,22 +3318,22 @@ } }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "callsites": { "version": "3.1.0", @@ -3748,15 +3342,15 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001230", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", - "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", "dev": true }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -3796,9 +3390,9 @@ "dev": true }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, "commander": { @@ -3816,8 +3410,7 @@ "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "cross-spawn": { "version": "7.0.3", @@ -3831,18 +3424,18 @@ } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "diff": { @@ -3870,15 +3463,9 @@ } }, "electron-to-chromium": { - "version": "1.3.740", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.740.tgz", - "integrity": "sha512-Mi2m55JrX2BFbNZGKYR+2ItcGnR4O5HhrvgoRRyZQlaMGQULqDhoGkLWHzJoshSzi7k1PUofxcDbNhlFrDZNhg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "1.3.891", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.891.tgz", + "integrity": "sha512-3cpwR82QkIS01CN/dup/4Yr3BiOiRLlZlcAFn/5FbNCunMO9ojqDgEP9JEo1QNLflu3pEnPWve50gHOEKc7r6w==", "dev": true }, "enhanced-resolve": { @@ -3925,37 +3512,36 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", + "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^6.0.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -3963,13 +3549,36 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", + "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } } }, "eslint-scope": { @@ -3983,53 +3592,39 @@ } }, "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", + "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", "dev": true, "requires": { - "acorn": "^7.4.0", + "acorn": "^8.5.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "eslint-visitor-keys": "^3.0.0" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", @@ -4040,9 +3635,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -4057,9 +3652,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -4083,9 +3678,9 @@ "dev": true }, "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -4116,6 +3711,17 @@ "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { @@ -4184,9 +3790,9 @@ } }, "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, "fs.realpath": { @@ -4228,12 +3834,12 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "glob-to-regexp": { @@ -4243,9 +3849,9 @@ "dev": true }, "globals": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", - "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -4263,20 +3869,12 @@ "ignore": "^5.1.4", "merge2": "^1.3.0", "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, "has": { @@ -4301,9 +3899,9 @@ "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "import-fresh": { @@ -4317,9 +3915,9 @@ } }, "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -4355,9 +3953,9 @@ "dev": true }, "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "requires": { "has": "^1.0.3" @@ -4369,16 +3967,10 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -4400,9 +3992,9 @@ } }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "isexe": { @@ -4439,20 +4031,13 @@ } } }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "json-parse-better-errors": { @@ -4504,28 +4089,16 @@ "p-locate": "^4.1.0" } }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.1.0.tgz", + "integrity": "sha512-eNc10JP6ezXp/qxXZlKS4OHAKNae3je9LUkjmXPDEa+Iidlz0n4nFi/9LT+GOgcayMWhykLoISN+v0THeOiWQQ==" }, "lru-cache": { "version": "6.0.0", @@ -4539,8 +4112,7 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "merge-stream": { "version": "2.0.0", @@ -4565,18 +4137,18 @@ } }, "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", "dev": true }, "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "dev": true, "requires": { - "mime-db": "1.47.0" + "mime-db": "1.50.0" } }, "mimic-fn": { @@ -4619,9 +4191,9 @@ "dev": true }, "node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "npm-run-path": { @@ -4666,12 +4238,12 @@ } }, "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "yocto-queue": "^0.1.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -4681,17 +4253,6 @@ "dev": true, "requires": { "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } } }, "p-try": { @@ -4745,6 +4306,12 @@ "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -4794,24 +4361,18 @@ } }, "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "requires": { "resolve": "^1.9.0" } }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "resolve": { @@ -4931,9 +4492,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "dev": true }, "slash": { @@ -4942,17 +4503,6 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4967,30 +4517,13 @@ "source-map": "^0.6.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-final-newline": { @@ -5014,44 +4547,10 @@ "has-flag": "^4.0.0" } }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.5.0.tgz", - "integrity": "sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, "terser": { @@ -5074,13 +4573,12 @@ } }, "terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", "dev": true, "requires": { "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", @@ -5118,7 +4616,6 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", - "dev": true, "requires": { "@cspotcode/source-map-support": "0.7.0", "@tsconfig/node10": "^1.0.7", @@ -5134,17 +4631,10 @@ "yn": "3.1.1" }, "dependencies": { - "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" } } }, @@ -5181,8 +4671,7 @@ "typescript": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" }, "uri-js": { "version": "4.4.1", @@ -5210,9 +4699,9 @@ } }, "webpack": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", - "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", + "version": "5.62.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.62.1.tgz", + "integrity": "sha512-jNLtnWChS2CMZ7vqWtztv0G6fYB5hz11Zsadp5tE7e4/66zVDj7/KUeQZOsOl8Hz5KrLJH1h2eIDl6AnlyE12Q==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -5239,21 +4728,6 @@ "terser-webpack-plugin": "^5.1.3", "watchpack": "^2.2.0", "webpack-sources": "^3.2.0" - }, - "dependencies": { - "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - } } }, "webpack-cli": { @@ -5276,12 +4750,6 @@ "webpack-merge": "^5.7.3" }, "dependencies": { - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -5291,9 +4759,9 @@ } }, "webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -5342,14 +4810,7 @@ "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" } } } diff --git a/package.json b/package.json index 0769b1e757..0453808fb6 100644 --- a/package.json +++ b/package.json @@ -22,16 +22,16 @@ }, "dependencies": { "binaryen": "102.0.0-nightly.20211028", - "long": "^4.0.0", + "long": "^5.1.0", "source-map-support": "^0.5.20", "ts-node": "^10.4.0" }, "devDependencies": { "@types/node": "^16.11.6", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", "diff": "^5.0.0", - "eslint": "^7.32.0", + "eslint": "^8.2.0", "glob": "^7.2.0", "mkdirp": "^1.0.4", "physical-cpu-count": "^2.0.0", diff --git a/std/portable/index.js b/std/portable/index.js index 01165dd358..4e2c6c345d 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -78,7 +78,7 @@ if (typeof globalScope.ASC_TARGET === "undefined") { globalScope["f32"] = function f32(value) { return Math.fround(value); }, { "EPSILON": { value: 1.1920928955078125e-07, writable: false }, - "MIN_VALUE": { value: 1.4012984643248170e-45, writable: false }, + "MIN_VALUE": { value: 1.401298464324817e-45, writable: false }, "MAX_VALUE": { value: 3.4028234663852886e+38, writable: false }, "MIN_NORMAL_VALUE": { value: 1.1754943508222875e-38, writable: false }, "MIN_SAFE_INTEGER": { value: -16777215, writable: false }, diff --git a/tests/compiler/issues/1699.ts b/tests/compiler/issues/1699.ts index 5ac1d90b67..8b29f619ce 100644 --- a/tests/compiler/issues/1699.ts +++ b/tests/compiler/issues/1699.ts @@ -1,5 +1,5 @@ class MultiAssignmentTest { - test: i32 = 2; + test: i32 = 2; } function test(): void { From 70013e94d5e154d5005cc73edbed308dec5c5950 Mon Sep 17 00:00:00 2001 From: Congcong Cai Date: Thu, 11 Nov 2021 17:32:44 +0800 Subject: [PATCH 13/19] fix: Propagate inner conditional flags in switch statements (#2102) --- src/compiler.ts | 3 ++- src/flow.ts | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/compiler.ts b/src/compiler.ts index a4c10db782..3a473ffaaf 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -2972,7 +2972,8 @@ export class Compiler extends DiagnosticEmitter { if (terminates || isLast || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { commonCategorical &= innerFlow.flags; } - commonConditional |= innerFlow.flags & FlowFlags.ANY_CONDITIONAL; + + commonConditional |= innerFlow.deriveConditionalFlags(); // Switch back to the parent flow innerFlow.unset( diff --git a/src/flow.ts b/src/flow.ts index d685df7409..c8923f3b11 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -266,6 +266,26 @@ export class Flow { /** Unsets the specified flag or flags. */ unset(flag: FlowFlags): void { this.flags &= ~flag; } + deriveConditionalFlags(): FlowFlags { + let condiFlags = this.flags & FlowFlags.ANY_CONDITIONAL; + if (this.is(FlowFlags.RETURNS)) { + condiFlags |= FlowFlags.CONDITIONALLY_RETURNS; + } + if (this.is(FlowFlags.THROWS)) { + condiFlags |= FlowFlags.CONDITIONALLY_THROWS; + } + if (this.is(FlowFlags.BREAKS)) { + condiFlags |= FlowFlags.CONDITIONALLY_BREAKS; + } + if (this.is(FlowFlags.CONTINUES)) { + condiFlags |= FlowFlags.CONDITIONALLY_CONTINUES; + } + if (this.is(FlowFlags.ACCESSES_THIS)) { + condiFlags |= FlowFlags.CONDITIONALLY_ACCESSES_THIS; + } + return condiFlags; + } + /** Forks this flow to a child flow. */ fork(resetBreakContext: bool = false): Flow { var branch = new Flow(this.parentFunction); From 1cbe3937d1ecb0538a4a1ebc3ae741d7d773bb8b Mon Sep 17 00:00:00 2001 From: Max Graey Date: Thu, 11 Nov 2021 11:34:06 +0200 Subject: [PATCH 14/19] fix: Types of small integer constants should always set a current type (#2132) --- src/compiler.ts | 10 +---- tests/compiler/binary.untouched.wat | 15 ++++--- tests/compiler/call-super.untouched.wat | 3 +- tests/compiler/class-implements.untouched.wat | 3 +- .../class-overloading-cast.untouched.wat | 3 +- .../compiler/class-overloading.untouched.wat | 3 +- tests/compiler/class.untouched.wat | 3 +- tests/compiler/constructor.untouched.wat | 3 +- tests/compiler/do.untouched.wat | 6 ++- .../empty-exportruntime.untouched.wat | 6 ++- tests/compiler/empty-new.untouched.wat | 3 +- tests/compiler/exports.untouched.wat | 3 +- .../exportstar-rereexport.untouched.wat | 3 +- .../extends-baseaggregate.untouched.wat | 3 +- .../compiler/extends-recursive.untouched.wat | 3 +- .../field-initialization.untouched.wat | 3 +- tests/compiler/field.untouched.wat | 6 ++- tests/compiler/for.untouched.wat | 6 ++- tests/compiler/function-call.untouched.wat | 3 +- .../function-expression.untouched.wat | 3 +- tests/compiler/getter-call.untouched.wat | 3 +- .../implicit-getter-setter.untouched.wat | 3 +- tests/compiler/infer-array.untouched.wat | 3 +- tests/compiler/infer-generic.untouched.wat | 3 +- tests/compiler/inlining.untouched.wat | 3 +- tests/compiler/instanceof-class.untouched.wat | 3 +- tests/compiler/issues/1095.untouched.wat | 3 +- tests/compiler/issues/1225.untouched.wat | 6 ++- tests/compiler/issues/1699.untouched.wat | 3 +- tests/compiler/logical.untouched.wat | 6 ++- tests/compiler/managed-cast.untouched.wat | 6 ++- tests/compiler/new.untouched.wat | 3 +- tests/compiler/number.untouched.wat | 3 +- tests/compiler/object-literal.untouched.wat | 6 ++- .../optional-typeparameters.untouched.wat | 3 +- tests/compiler/overflow.ts | 9 ++++ tests/compiler/overflow.untouched.wat | 26 +++++++++++ tests/compiler/reexport.untouched.wat | 3 +- tests/compiler/rereexport.untouched.wat | 3 +- tests/compiler/resolve-access.untouched.wat | 3 +- tests/compiler/resolve-binary.untouched.wat | 15 ++++--- .../resolve-elementaccess.untouched.wat | 3 +- .../resolve-function-expression.untouched.wat | 3 +- tests/compiler/resolve-nested.untouched.wat | 3 +- tests/compiler/resolve-new.untouched.wat | 3 +- .../resolve-propertyaccess.untouched.wat | 3 +- tests/compiler/resolve-ternary.untouched.wat | 3 +- tests/compiler/resolve-unary.untouched.wat | 3 +- tests/compiler/rt/finalize.untouched.wat | 6 ++- tests/compiler/rt/instanceof.untouched.wat | 3 +- .../runtime-incremental-export.untouched.wat | 6 ++- tests/compiler/std-wasi/console.untouched.wat | 3 +- tests/compiler/std-wasi/crypto.untouched.wat | 3 +- tests/compiler/std-wasi/process.untouched.wat | 3 +- .../compiler/std/array-literal.untouched.wat | 6 ++- tests/compiler/std/array.untouched.wat | 12 +++-- tests/compiler/std/arraybuffer.untouched.wat | 6 ++- tests/compiler/std/dataview.untouched.wat | 6 ++- tests/compiler/std/date.untouched.wat | 15 ++++--- tests/compiler/std/map.untouched.wat | 6 ++- tests/compiler/std/math.untouched.wat | 45 ++++++++++++------- tests/compiler/std/new.untouched.wat | 3 +- .../std/operator-overloading.untouched.wat | 3 +- tests/compiler/std/set.untouched.wat | 6 ++- tests/compiler/std/static-array.untouched.wat | 3 +- tests/compiler/std/staticarray.untouched.wat | 6 ++- .../std/string-casemapping.untouched.wat | 3 +- .../std/string-encoding.untouched.wat | 6 ++- tests/compiler/std/string.untouched.wat | 6 ++- tests/compiler/std/symbol.untouched.wat | 3 +- tests/compiler/std/typedarray.untouched.wat | 12 +++-- tests/compiler/std/uri.untouched.wat | 6 ++- tests/compiler/super-inline.untouched.wat | 3 +- tests/compiler/templateliteral.untouched.wat | 3 +- tests/compiler/throw.untouched.wat | 3 +- tests/compiler/typeof.untouched.wat | 3 +- tests/compiler/while.untouched.wat | 6 ++- 77 files changed, 289 insertions(+), 134 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 3a473ffaaf..f84a31cd8b 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -3392,14 +3392,8 @@ export class Compiler extends DiagnosticEmitter { ): ExpressionRef { assert(element.is(CommonFlags.INLINED | CommonFlags.RESOLVED)); var type = element.type; - switch ( - !(constraints & (Constraints.CONV_IMPLICIT | Constraints.CONV_EXPLICIT)) && - type.isIntegerValue && - contextualType.isIntegerValue && - type.size < contextualType.size - ? (this.currentType = contextualType).kind // essentially precomputes a (sign-)extension - : (this.currentType = type).kind - ) { + this.currentType = type; + switch (type.kind) { case TypeKind.I8: case TypeKind.I16: { let shift = type.computeSmallIntegerShift(Type.i32); diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat index ae76893ff6..4ba77b7887 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.untouched.wat @@ -722,10 +722,12 @@ local.set $11 local.get $11 i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shr_u - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i32.wrap_i64 local.set $12 @@ -1048,7 +1050,8 @@ f64.add local.set $28 local.get $14 - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i64.const 1 i64.shl @@ -1059,7 +1062,8 @@ i64.extend_i32_u i64.add i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shl local.set $13 @@ -2049,7 +2053,8 @@ i64.extend_i32_u i64.add i64.const 52 - i64.const 5 + i32.const 5 + i64.extend_i32_s i64.sub i64.shl i64.add diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 446526b584..3cd4a32f81 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -1536,7 +1536,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index 104af54d85..3d1f967fd7 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -1546,7 +1546,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/class-overloading-cast.untouched.wat b/tests/compiler/class-overloading-cast.untouched.wat index c3df550ffc..1bcc0ca549 100644 --- a/tests/compiler/class-overloading-cast.untouched.wat +++ b/tests/compiler/class-overloading-cast.untouched.wat @@ -1546,7 +1546,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 73b3ed7326..b77ff017c3 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -1552,7 +1552,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 6fda41c809..e27fc15a42 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -1649,7 +1649,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 2a90aead9b..e6cb986975 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -1548,7 +1548,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 5780fd01a8..92a47f874d 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -1945,7 +1945,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2928,7 +2929,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/empty-exportruntime.untouched.wat b/tests/compiler/empty-exportruntime.untouched.wat index 6cfe1e0434..bcf84011f0 100644 --- a/tests/compiler/empty-exportruntime.untouched.wat +++ b/tests/compiler/empty-exportruntime.untouched.wat @@ -1542,7 +1542,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2455,7 +2456,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.untouched.wat index 7d67affc28..8f30e3f8cd 100644 --- a/tests/compiler/empty-new.untouched.wat +++ b/tests/compiler/empty-new.untouched.wat @@ -1535,7 +1535,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 6e2f615cd1..8d3f9103b0 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -1599,7 +1599,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index b1e2bafc65..b78191f004 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -1580,7 +1580,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index ee79fbfd3c..e839a9c359 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -1545,7 +1545,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index 886d35c1f8..1e77d96a2a 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -1540,7 +1540,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 90140e0342..9eeb4a40b4 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -1545,7 +1545,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/field.untouched.wat b/tests/compiler/field.untouched.wat index 652bf1f8b0..0b3da62555 100644 --- a/tests/compiler/field.untouched.wat +++ b/tests/compiler/field.untouched.wat @@ -1537,7 +1537,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -3753,7 +3754,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 274cf8f80a..1e1cbea9db 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -1962,7 +1962,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2963,7 +2964,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index 27b2cc8679..4e98519326 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -1570,7 +1570,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index b190999976..f142d9be69 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -1726,7 +1726,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 3fa9b41b61..11bf3c25b4 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -1538,7 +1538,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 4bdc62a2b0..54685f8625 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -1545,7 +1545,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index a39653b6f5..25fb03dc89 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1554,7 +1554,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 9363d0ea8b..30134cd190 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -1624,7 +1624,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 591305f56b..2992a1704e 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -1744,7 +1744,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index 5bfcc1c5e8..4f986b8fa1 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -1538,7 +1538,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 0d031c6765..6e7d533459 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -1538,7 +1538,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index c422ca0438..6d1f184cd0 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -1549,7 +1549,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2408,7 +2409,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index 24e10aaea1..27534979fa 100644 --- a/tests/compiler/issues/1699.untouched.wat +++ b/tests/compiler/issues/1699.untouched.wat @@ -1540,7 +1540,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index 344c415077..e47276a328 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -1561,7 +1561,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2423,7 +2424,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index 40b0f68c6f..bd5c191b51 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -1538,7 +1538,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2532,7 +2533,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index 2531a2b11b..6d850e0d3e 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -1541,7 +1541,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 6549064b26..19b979c51a 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -1639,7 +1639,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 588fdabe2c..5c152a30b5 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -1628,7 +1628,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -4265,7 +4266,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 05136ca9de..be40364603 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -1544,7 +1544,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/overflow.ts b/tests/compiler/overflow.ts index bb05caa01b..9ca7e3bf01 100644 --- a/tests/compiler/overflow.ts +++ b/tests/compiler/overflow.ts @@ -128,3 +128,12 @@ assert(val - 1 == 0xffff); } + +{ + // regression #2131 + const a: u32 = 65; + const b: u16 = 63457; + let c = a + (((b & 0x1f8) >> 3) - (b & 0x200 ? 0x40 : 0)); + // trace(">>>> c", 1, c); + assert(c == 65597); +} diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index 66b4056373..e4aa1a45e8 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -677,6 +677,32 @@ call $~lib/builtins/abort unreachable end + i32.const 65 + i32.const 63457 + i32.const 504 + i32.and + i32.const 3 + i32.const 15 + i32.and + i32.shr_u + i32.const 64 + i32.sub + i32.const 65535 + i32.and + i32.add + local.set $0 + local.get $0 + i32.const 65597 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end ) (func $~start call $start:overflow diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 5ed6191586..09709a9c0c 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -1628,7 +1628,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index 30c35df4bc..2ee9a00878 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -1580,7 +1580,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 53636d9820..11df03b345 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1554,7 +1554,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index e6b550cff1..740e8907c9 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -1812,7 +1812,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -3464,10 +3465,12 @@ local.set $11 local.get $11 i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shr_u - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i32.wrap_i64 local.set $12 @@ -3790,7 +3793,8 @@ f64.add local.set $28 local.get $14 - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i64.const 1 i64.shl @@ -3801,7 +3805,8 @@ i64.extend_i32_u i64.add i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shl local.set $13 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 981941dc8a..1255683dc2 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -1578,7 +1578,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index d2d5582ab5..9a94ff8609 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -1621,7 +1621,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index 2b9a974028..c8c8038796 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -1560,7 +1560,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index c8804fbdba..534a0de5f0 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -1536,7 +1536,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 1204319f7b..08355c586a 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -1622,7 +1622,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 32b79fd5ae..6cb50eb234 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1629,7 +1629,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 0d48fb1030..6e43525dc4 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -1619,7 +1619,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index 9f65c5f3fd..73c8adfcee 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -1559,7 +1559,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2405,7 +2406,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 04e2819d55..edb3157a87 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -1546,7 +1546,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/rt/runtime-incremental-export.untouched.wat b/tests/compiler/rt/runtime-incremental-export.untouched.wat index 6cfe1e0434..bcf84011f0 100644 --- a/tests/compiler/rt/runtime-incremental-export.untouched.wat +++ b/tests/compiler/rt/runtime-incremental-export.untouched.wat @@ -1542,7 +1542,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2455,7 +2456,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index 03dfa64e06..3886345944 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -3586,7 +3586,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index fdf616ac4a..bd5cad7d2c 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -2143,7 +2143,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index 6d800d22f5..d097d147d1 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -3584,7 +3584,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 613b5d27e7..b32f64f179 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -1612,7 +1612,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -3861,7 +3862,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 5604a6719a..2202591239 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -1952,7 +1952,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -18381,7 +18382,8 @@ if local.get $0 local.get $1 - i64.const 48 + i32.const 48 + i64.extend_i32_s i64.or i64.store16 i32.const 1 @@ -18508,7 +18510,8 @@ i32.shl i32.add local.get $1 - i64.const 48 + i32.const 48 + i64.extend_i32_s i64.or i64.store16 i32.const 1 @@ -18923,7 +18926,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index b76e1b5d56..48fd5021e3 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -1543,7 +1543,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -4025,7 +4026,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 63b8b01b7e..2950f7f29b 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -1550,7 +1550,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -3300,7 +3301,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index fcee4fcf69..1d5aadc95d 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -240,7 +240,8 @@ local.get $2 call $~lib/date/daysSinceEpoch i64.extend_i32_s - i64.const 86400000 + i32.const 86400000 + i64.extend_i32_s i64.mul local.get $3 i32.const 3600000 @@ -1893,7 +1894,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -2963,7 +2965,8 @@ local.get $1 call $~lib/date/daysSinceEpoch i64.extend_i32_s - i64.const 86400000 + i32.const 86400000 + i64.extend_i32_s i64.mul local.get $5 i64.add @@ -3013,7 +3016,8 @@ i32.load offset=8 call $~lib/date/daysSinceEpoch i64.extend_i32_s - i64.const 86400000 + i32.const 86400000 + i64.extend_i32_s i64.mul local.get $5 i64.add @@ -3061,7 +3065,8 @@ i32.load offset=8 call $~lib/date/daysSinceEpoch i64.extend_i32_s - i64.const 86400000 + i32.const 86400000 + i64.extend_i32_s i64.mul local.get $5 i64.add diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 397e0e6b2e..d74fda104e 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -1563,7 +1563,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -16538,7 +16539,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index d83cf67e4f..176beb6f5c 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -1482,10 +1482,12 @@ local.set $13 local.get $13 i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shr_u - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i32.wrap_i64 local.set $14 @@ -6197,7 +6199,8 @@ f64.add local.set $7 local.get $6 - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i64.const 1 i64.shl @@ -6205,7 +6208,8 @@ local.set $8 local.get $6 i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shl local.set $9 @@ -6875,7 +6879,8 @@ local.get $11 local.get $7 i64.const 52 - i64.const 5 + i32.const 5 + i64.extend_i32_s i64.sub i64.shl i64.add @@ -7171,7 +7176,8 @@ f64.sub local.set $6 local.get $5 - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i64.const 1 i64.shl @@ -7179,7 +7185,8 @@ local.set $7 local.get $5 i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shl local.set $8 @@ -7433,7 +7440,8 @@ local.get $8 local.get $6 i64.const 52 - i64.const 5 + i32.const 5 + i64.extend_i32_s i64.sub i64.shl i64.add @@ -8601,10 +8609,12 @@ local.set $13 local.get $13 i64.const 52 - i64.const 6 + i32.const 6 + i64.extend_i32_s i64.sub i64.shr_u - i64.const 63 + i32.const 63 + i64.extend_i32_s i64.and i32.wrap_i64 local.set $14 @@ -10045,10 +10055,12 @@ local.set $11 local.get $11 i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shr_u - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i32.wrap_i64 local.set $12 @@ -10371,7 +10383,8 @@ f64.add local.set $28 local.get $14 - i64.const 127 + i32.const 127 + i64.extend_i32_s i64.and i64.const 1 i64.shl @@ -10382,7 +10395,8 @@ i64.extend_i32_u i64.add i64.const 52 - i64.const 7 + i32.const 7 + i64.extend_i32_s i64.sub i64.shl local.set $13 @@ -11141,7 +11155,8 @@ i64.extend_i32_u i64.add i64.const 52 - i64.const 5 + i32.const 5 + i64.extend_i32_s i64.sub i64.shl i64.add diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index d4999fd5a6..3478dd091c 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -1549,7 +1549,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 7d0d132f14..34dfb694fb 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -1603,7 +1603,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index ea82e01e9f..c58528fe3e 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -1558,7 +1558,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -13550,7 +13551,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index e3d3535279..d10cb3566b 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -1592,7 +1592,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index 3153dd3c4a..62b5515c7a 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -1671,7 +1671,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -6223,7 +6224,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index b6f0e112cf..49a2dfc5da 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -1724,7 +1724,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index b5d8c553e8..3211f81ba3 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -1561,7 +1561,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -4257,7 +4258,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 4c539bfd82..0f8eecf07f 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -2259,7 +2259,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -9273,7 +9274,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index b41fcb2bfb..ed4a37b46d 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -1595,7 +1595,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index a59cf9b188..151728470b 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -1906,7 +1906,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -22744,7 +22745,8 @@ i32.shl i32.add local.get $1 - i64.const 48 + i32.const 48 + i64.extend_i32_s i64.or i64.store16 i32.const 1 @@ -22840,7 +22842,8 @@ if local.get $0 local.get $1 - i64.const 48 + i32.const 48 + i64.extend_i32_s i64.or i64.store16 i32.const 1 @@ -40508,7 +40511,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index 05f634cf74..db02ab3292 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.untouched.wat @@ -1605,7 +1605,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -4791,7 +4792,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index c27fd26d61..b144116759 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -1537,7 +1537,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index 0190703438..23a8ef1f66 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.untouched.wat @@ -1754,7 +1754,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat index 06f4c2c127..3ab9afb46d 100644 --- a/tests/compiler/throw.untouched.wat +++ b/tests/compiler/throw.untouched.wat @@ -1664,7 +1664,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 63390e1779..d3f978daea 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -1713,7 +1713,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index cea58d34f9..b5b316251b 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -1991,7 +1991,8 @@ drop global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u @@ -3076,7 +3077,8 @@ end global.get $~lib/rt/itcms/total i64.extend_i32_u - i64.const 200 + i32.const 200 + i64.extend_i32_u i64.mul i64.const 100 i64.div_u From 34f52c748c923845a579603b43d1abf8956bc5e0 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Thu, 11 Nov 2021 12:42:20 +0200 Subject: [PATCH 15/19] Optimize some inner cases for tokenFromKeyword (#2116) --- src/tokenizer.ts | 116 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 79 insertions(+), 37 deletions(-) diff --git a/src/tokenizer.ts b/src/tokenizer.ts index e535d06ffa..5aec3bd243 100644 --- a/src/tokenizer.ts +++ b/src/tokenizer.ts @@ -177,13 +177,17 @@ export enum IdentifierHandling { } export function tokenFromKeyword(text: string): Token { - assert(text.length); + let len = text.length; + assert(len); switch (text.charCodeAt(0)) { case CharCode.a: { - if (text == "abstract") return Token.ABSTRACT; + if (len == 5) { + if (text == "async") return Token.ASYNC; + if (text == "await") return Token.AWAIT; + break; + } if (text == "as") return Token.AS; - if (text == "async") return Token.ASYNC; - if (text == "await") return Token.AWAIT; + if (text == "abstract") return Token.ABSTRACT; break; } case CharCode.b: { @@ -191,35 +195,47 @@ export function tokenFromKeyword(text: string): Token { break; } case CharCode.c: { + if (len == 5) { + if (text == "const") return Token.CONST; + if (text == "class") return Token.CLASS; + if (text == "catch") return Token.CATCH; + break; + } if (text == "case") return Token.CASE; - if (text == "catch") return Token.CATCH; - if (text == "class") return Token.CLASS; if (text == "continue") return Token.CONTINUE; - if (text == "const") return Token.CONST; if (text == "constructor") return Token.CONSTRUCTOR; break; } case CharCode.d: { - if (text == "debugger") return Token.DEBUGGER; - if (text == "declare") return Token.DECLARE; - if (text == "default") return Token.DEFAULT; - if (text == "delete") return Token.DELETE; + if (len == 7) { + if (text == "default") return Token.DEFAULT; + if (text == "declare") return Token.DECLARE; + break; + } if (text == "do") return Token.DO; + if (text == "delete") return Token.DELETE; + if (text == "debugger") return Token.DEBUGGER; break; } case CharCode.e: { - if (text == "else") return Token.ELSE; - if (text == "enum") return Token.ENUM; + if (len == 4) { + if (text == "else") return Token.ELSE; + if (text == "enum") return Token.ENUM; + break; + } if (text == "export") return Token.EXPORT; if (text == "extends") return Token.EXTENDS; break; } case CharCode.f: { - if (text == "false") return Token.FALSE; - if (text == "finally") return Token.FINALLY; - if (text == "for") return Token.FOR; - if (text == "from") return Token.FROM; + if (len <= 5) { + if (text == "false") return Token.FALSE; + if (text == "for") return Token.FOR; + if (text == "from") return Token.FROM; + break; + } if (text == "function") return Token.FUNCTION; + if (text == "finally") return Token.FINALLY; break; } case CharCode.g: { @@ -227,13 +243,30 @@ export function tokenFromKeyword(text: string): Token { break; } case CharCode.i: { - if (text == "if") return Token.IF; - if (text == "implements") return Token.IMPLEMENTS; - if (text == "import") return Token.IMPORT; - if (text == "in") return Token.IN; - if (text == "instanceof") return Token.INSTANCEOF; - if (text == "interface") return Token.INTERFACE; - if (text == "is") return Token.IS; + if (len == 2) { + if (text == "if") return Token.IF; + if (text == "in") return Token.IN; + if (text == "is") return Token.IS; + break; + } + switch (text.charCodeAt(3)) { + case CharCode.l: { + if (text == "implements") return Token.IMPLEMENTS; + break; + } + case CharCode.o: { + if (text == "import") return Token.IMPORT; + break; + } + case CharCode.t: { + if (text == "instanceof") return Token.INSTANCEOF; + break; + } + case CharCode.e: { + if (text == "interface") return Token.INTERFACE; + break; + } + } break; } case CharCode.k: { @@ -249,9 +282,9 @@ export function tokenFromKeyword(text: string): Token { break; } case CharCode.n: { - if (text == "namespace") return Token.NAMESPACE; if (text == "new") return Token.NEW; if (text == "null") return Token.NULL; + if (text == "namespace") return Token.NAMESPACE; break; } case CharCode.o: { @@ -259,30 +292,39 @@ export function tokenFromKeyword(text: string): Token { break; } case CharCode.p: { - if (text == "package") return Token.PACKAGE; - if (text == "private") return Token.PRIVATE; - if (text == "protected") return Token.PROTECTED; + if (len == 7) { + if (text == "private") return Token.PRIVATE; + if (text == "package") return Token.PACKAGE; + break; + } if (text == "public") return Token.PUBLIC; + if (text == "protected") return Token.PROTECTED; break; } case CharCode.r: { - if (text == "readonly") return Token.READONLY; if (text == "return") return Token.RETURN; + if (text == "readonly") return Token.READONLY; break; } case CharCode.s: { + if (len == 6) { + if (text == "switch") return Token.SWITCH; + if (text == "static") return Token.STATIC; + break; + } if (text == "set") return Token.SET; - if (text == "static") return Token.STATIC; if (text == "super") return Token.SUPER; - if (text == "switch") return Token.SWITCH; break; } case CharCode.t: { - if (text == "this") return Token.THIS; - if (text == "throw") return Token.THROW; - if (text == "true") return Token.TRUE; + if (len == 4) { + if (text == "true") return Token.TRUE; + if (text == "this") return Token.THIS; + if (text == "type") return Token.TYPE; + break; + } if (text == "try") return Token.TRY; - if (text == "type") return Token.TYPE; + if (text == "throw") return Token.THROW; if (text == "typeof") return Token.TYPEOF; break; } @@ -917,9 +959,9 @@ export class Tokenizer extends DiagnosticEmitter { if (identifierHandling != IdentifierHandling.ALWAYS) { let maybeKeywordToken = tokenFromKeyword(text.substring(posBefore, pos)); if ( - maybeKeywordToken !== Token.INVALID && + maybeKeywordToken != Token.INVALID && !( - identifierHandling === IdentifierHandling.PREFER && + identifierHandling == IdentifierHandling.PREFER && tokenIsAlsoIdentifier(maybeKeywordToken) ) ) { From 341cb9d168cfc9e48aace1f4ee79b04fce38a174 Mon Sep 17 00:00:00 2001 From: mooooooi Date: Thu, 11 Nov 2021 18:51:46 +0800 Subject: [PATCH 16/19] fix: Always normalize relative transform paths (#2096) --- NOTICE | 1 + cli/util/options.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/NOTICE b/NOTICE index 6226bc34ab..3160d03559 100644 --- a/NOTICE +++ b/NOTICE @@ -43,6 +43,7 @@ under the licensing terms detailed in LICENSE: * Joe Pea * Felipe Gasper * Congcong Cai <77575210+HerrCai0907@users.noreply.github.com> +* mooooooi Portions of this software are derived from third-party works licensed under the following terms: diff --git a/cli/util/options.js b/cli/util/options.js index ee23563de9..c4159fec27 100644 --- a/cli/util/options.js +++ b/cli/util/options.js @@ -237,6 +237,16 @@ function merge(config, currentOptions, parentOptions, parentBaseDir) { exports.merge = merge; +function normalizePath(p) { + const parsed = path.parse(p); + if (!parsed.root) { + parsed.root = "./"; + } + return path.format(parsed); +} + +exports.normalizePath = normalizePath; + const dynrequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require; @@ -247,7 +257,7 @@ function resolvePath(p, baseDir, useNodeResolution = false) { if (useNodeResolution && !p.startsWith(".")) { return dynrequire.resolve(p, { paths: [ baseDir ] }); } - return path.join(baseDir, p); + return normalizePath(path.join(baseDir, p)); } exports.resolvePath = resolvePath; From 6a3e8485a71f61fc6cf4e1184b464a3ef34bd7a2 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Thu, 11 Nov 2021 14:05:07 +0200 Subject: [PATCH 17/19] fix: Fix boolean oveflow casts for constants (#2134) --- src/compiler.ts | 11 ++++- tests/compiler/overflow.ts | 21 +++++++++ tests/compiler/overflow.untouched.wat | 64 +++++++++++++++++++++++++-- 3 files changed, 91 insertions(+), 5 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index f84a31cd8b..0598097c8b 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -3394,6 +3394,14 @@ export class Compiler extends DiagnosticEmitter { var type = element.type; this.currentType = type; switch (type.kind) { + case TypeKind.BOOL: { + return this.module.i32( + element.constantValueKind == ConstantValueKind.INTEGER + // @ts-ignore + ? i64_ne(element.constantIntegerValue, i64_zero) + : 0 + ); + } case TypeKind.I8: case TypeKind.I16: { let shift = type.computeSmallIntegerShift(Type.i32); @@ -3404,8 +3412,7 @@ export class Compiler extends DiagnosticEmitter { ); // recognized by canOverflow } case TypeKind.U8: - case TypeKind.U16: - case TypeKind.BOOL: { + case TypeKind.U16: { let mask = element.type.computeSmallIntegerMask(Type.i32); return this.module.i32( element.constantValueKind == ConstantValueKind.INTEGER diff --git a/tests/compiler/overflow.ts b/tests/compiler/overflow.ts index 9ca7e3bf01..6cd77e35c7 100644 --- a/tests/compiler/overflow.ts +++ b/tests/compiler/overflow.ts @@ -129,6 +129,27 @@ assert(val - 1 == 0xffff); } +// special cases +{ + const b1 = 2; + assert(b1 == true); + + const b2 = -1; + assert(b2 == true); + + const b3 = 0; + assert(b3 == false); + + let b4 = 2; + assert(b4 == true); + + let b5 = -1; + assert(b5 == true); + + let b6 = 0; + assert(b6 == false); +} + { // regression #2131 const a: u32 = 65; diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index e4aa1a45e8..6586fcaf6f 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -677,6 +677,64 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 1 + i32.const 1 + i32.eq + drop + i32.const 0 + i32.const 0 + i32.eq + drop + i32.const 2 + local.set $0 + local.get $0 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 144 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + local.get $1 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + local.get $2 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 65 i32.const 63457 i32.const 504 @@ -690,15 +748,15 @@ i32.const 65535 i32.and i32.add - local.set $0 - local.get $0 + local.set $2 + local.get $2 i32.const 65597 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 138 + i32.const 159 i32.const 3 call $~lib/builtins/abort unreachable From 3b3fe600cbc1262d1cb5117d3869e7c7d40bbf96 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 11 Nov 2021 16:44:46 +0100 Subject: [PATCH 18/19] fix: Fix Binaryen glue string encoding (#2129) --- src/module.ts | 53 ++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/module.ts b/src/module.ts index 17e5597fe8..e4f871de7d 100644 --- a/src/module.ts +++ b/src/module.ts @@ -3102,12 +3102,15 @@ export function allocPtrArray(ptrs: usize[] | null): usize { function stringLengthUTF8(str: string): usize { var len = 0; for (let i = 0, k = str.length; i < k; ++i) { - let u = str.charCodeAt(i) >>> 0; - if (u <= 0x7F) { + let c1 = str.charCodeAt(i) >>> 0; + if (c1 <= 0x7F) { len += 1; - } else if (u <= 0x7FF) { + } else if (c1 <= 0x7FF) { len += 2; - } else if (u >= 0xD800 && u <= 0xDFFF && i + 1 < k) { + } else if ( + (c1 & 0xFC00) === 0xD800 && i + 1 < k && + (str.charCodeAt(i + 1) & 0xFC00) === 0xDC00 + ) { i++; len += 4; } else { @@ -3135,29 +3138,27 @@ function allocString(str: string | null): usize { } } } else { - // the following is based on Emscripten's stringToUTF8Array for (let i = 0, k = str.length; i < k; ++i) { - let u = str.charCodeAt(i) >>> 0; - if (u <= 0x7F) { - binaryen.__i32_store8(idx++, u as u8); - } else if (u <= 0x7FF) { - binaryen.__i32_store8(idx++, (0xC0 | (u >>> 6) ) as u8); - binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); - } else if (u >= 0xD800 && u <= 0xDFFF) { - if (i + 1 < k) { - u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); - } - if (u <= 0xFFFF) { - binaryen.__i32_store8(idx++, (0xE0 | (u >>> 12) ) as u8); - binaryen.__i32_store8(idx++, (0x80 | ((u >>> 6) & 63)) as u8); - binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); - } else { - assert(u <= 0x10FFFF, "Invalid Unicode code point during allocString"); - binaryen.__i32_store8(idx++, (0xF0 | (u >>> 18) ) as u8); - binaryen.__i32_store8(idx++, (0x80 | ((u >>> 12) & 63)) as u8); - binaryen.__i32_store8(idx++, (0x80 | ((u >>> 6) & 63)) as u8); - binaryen.__i32_store8(idx++, (0x80 | ( u & 63)) as u8); - } + let c1 = str.charCodeAt(i) >>> 0, c2: i32; + if (c1 <= 0x7F) { + binaryen.__i32_store8(idx++, c1 as u8); + } else if (c1 <= 0x7FF) { + binaryen.__i32_store8(idx++, (0xC0 | (c1 >>> 6) ) as u8); + binaryen.__i32_store8(idx++, (0x80 | ( c1 & 63)) as u8); + } else if ( + (c1 & 0xFC00) === 0xD800 && i + 1 < k && + ((c2 = str.charCodeAt(i + 1)) & 0xFC00) === 0xDC00 + ) { + c1 = 0x10000 + ((c1 & 0x3FF) << 10) | (c2 & 0x3FF); + ++i; + binaryen.__i32_store8(idx++, (0xF0 | (c1 >>> 18) ) as u8); + binaryen.__i32_store8(idx++, (0x80 | ((c1 >>> 12) & 63)) as u8); + binaryen.__i32_store8(idx++, (0x80 | ((c1 >>> 6) & 63)) as u8); + binaryen.__i32_store8(idx++, (0x80 | ( c1 & 63)) as u8); + } else { + binaryen.__i32_store8(idx++, (0xE0 | (c1 >>> 12) ) as u8); + binaryen.__i32_store8(idx++, (0x80 | ((c1 >>> 6) & 63)) as u8); + binaryen.__i32_store8(idx++, (0x80 | ( c1 & 63)) as u8); } } } From 584bacf85fe838451e19da4ee1042ae6f9af27d7 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Thu, 11 Nov 2021 18:22:21 +0200 Subject: [PATCH 19/19] feat: Add trueish conversion for v128 types (#2135) --- src/compiler.ts | 7 + src/flow.ts | 3 +- tests/compiler/features/simd.optimized.wat | 14 +- tests/compiler/features/simd.ts | 8 + tests/compiler/features/simd.untouched.wat | 279 +++++++++++---------- 5 files changed, 174 insertions(+), 137 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 0598097c8b..29b73a9702 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -3771,6 +3771,10 @@ export class Compiler extends DiagnosticEmitter { } } + // v128 to bool + } else if (fromType == Type.v128 && toType.isBooleanValue) { + expr = this.makeIsTrueish(expr, Type.v128, reportNode); + // int to int } else { // i64 to ... @@ -10299,6 +10303,9 @@ export class Compiler extends DiagnosticEmitter { module.i64(0xFFFFFFFE, 0xFFDFFFFF) // (0x7FF0000000000000 - 1) << 1 ); } + case TypeKind.V128: { + return module.unary(UnaryOp.AnyTrueV128, expr); + } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: case TypeKind.ANYREF: diff --git a/src/flow.ts b/src/flow.ts index c8923f3b11..c40c23686c 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -939,7 +939,7 @@ export class Flow { let key = _keys[i]; let leftFlags = changetype(leftFieldFlags.get(key)); if ( - (leftFlags & FieldFlags.INITIALIZED) != 0 && rightFieldFlags.has(key) && + (leftFlags & FieldFlags.INITIALIZED) != 0 && rightFieldFlags.has(key) && (changetype(rightFieldFlags.get(key)) & FieldFlags.INITIALIZED) ) { newFieldFlags.set(key, FieldFlags.INITIALIZED); @@ -1396,6 +1396,7 @@ export class Flow { case TypeRef.I64: { value = getConstValueI64Low(expr); break; } // discards upper bits case TypeRef.F32: { value = i32(getConstValueF32(expr)); break; } case TypeRef.F64: { value = i32(getConstValueF64(expr)); break; } + case TypeRef.V128: return false; default: assert(false); } switch (type.kind) { diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 84777455ed..95b3156975 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1015,7 +1015,7 @@ if i32.const 0 i32.const 1184 - i32.const 59 + i32.const 67 i32.const 5 call $~lib/builtins/abort unreachable @@ -1044,7 +1044,7 @@ if i32.const 0 i32.const 1184 - i32.const 69 + i32.const 77 i32.const 5 call $~lib/builtins/abort unreachable @@ -1073,7 +1073,7 @@ if i32.const 0 i32.const 1184 - i32.const 79 + i32.const 87 i32.const 5 call $~lib/builtins/abort unreachable @@ -1102,7 +1102,7 @@ if i32.const 0 i32.const 1184 - i32.const 89 + i32.const 97 i32.const 5 call $~lib/builtins/abort unreachable @@ -1131,7 +1131,7 @@ if i32.const 0 i32.const 1184 - i32.const 99 + i32.const 107 i32.const 5 call $~lib/builtins/abort unreachable @@ -1160,7 +1160,7 @@ if i32.const 0 i32.const 1184 - i32.const 109 + i32.const 117 i32.const 5 call $~lib/builtins/abort unreachable @@ -1169,7 +1169,7 @@ call $~lib/rt/tlsf/__free i32.const 0 i32.const 1184 - i32.const 255 + i32.const 263 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 2ecf07535c..432c715838 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -1,6 +1,14 @@ // hint: asc tests/compiler/simd --enable simd function test_v128(): void { + // check trueish + // @ts-ignore + assert(v128(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == true); + // @ts-ignore + assert(v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1) == true); + // @ts-ignore + assert(v128(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == false); + // equality and inequality assert( v128(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index aa67830fb4..29a3b2e40d 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1459,6 +1459,27 @@ ) (func $features/simd/test_v128 (local $0 i32) + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + v128.const i32x4 0x00000000 0x00000000 0x00000000 0xff000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.any_true + i32.const 0 + i32.ne + i32.const 0 + i32.eq + drop v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d i8x16.eq @@ -1544,7 +1565,7 @@ if i32.const 0 i32.const 160 - i32.const 59 + i32.const 67 i32.const 5 call $~lib/builtins/abort unreachable @@ -1568,7 +1589,7 @@ if i32.const 0 i32.const 160 - i32.const 69 + i32.const 77 i32.const 5 call $~lib/builtins/abort unreachable @@ -1592,7 +1613,7 @@ if i32.const 0 i32.const 160 - i32.const 79 + i32.const 87 i32.const 5 call $~lib/builtins/abort unreachable @@ -1616,7 +1637,7 @@ if i32.const 0 i32.const 160 - i32.const 89 + i32.const 97 i32.const 5 call $~lib/builtins/abort unreachable @@ -1640,7 +1661,7 @@ if i32.const 0 i32.const 160 - i32.const 99 + i32.const 107 i32.const 5 call $~lib/builtins/abort unreachable @@ -1664,7 +1685,7 @@ if i32.const 0 i32.const 160 - i32.const 109 + i32.const 117 i32.const 5 call $~lib/builtins/abort unreachable @@ -1695,7 +1716,7 @@ if i32.const 0 i32.const 160 - i32.const 131 + i32.const 139 i32.const 3 call $~lib/builtins/abort unreachable @@ -1713,7 +1734,7 @@ if i32.const 0 i32.const 160 - i32.const 133 + i32.const 141 i32.const 3 call $~lib/builtins/abort unreachable @@ -1732,7 +1753,7 @@ if i32.const 0 i32.const 160 - i32.const 135 + i32.const 143 i32.const 3 call $~lib/builtins/abort unreachable @@ -1749,7 +1770,7 @@ if i32.const 0 i32.const 160 - i32.const 136 + i32.const 144 i32.const 3 call $~lib/builtins/abort unreachable @@ -1810,7 +1831,7 @@ if i32.const 0 i32.const 160 - i32.const 177 + i32.const 185 i32.const 3 call $~lib/builtins/abort unreachable @@ -1824,7 +1845,7 @@ if i32.const 0 i32.const 160 - i32.const 182 + i32.const 190 i32.const 3 call $~lib/builtins/abort unreachable @@ -1838,7 +1859,7 @@ if i32.const 0 i32.const 160 - i32.const 183 + i32.const 191 i32.const 3 call $~lib/builtins/abort unreachable @@ -1853,7 +1874,7 @@ if i32.const 0 i32.const 160 - i32.const 184 + i32.const 192 i32.const 3 call $~lib/builtins/abort unreachable @@ -1870,7 +1891,7 @@ if i32.const 0 i32.const 160 - i32.const 185 + i32.const 193 i32.const 3 call $~lib/builtins/abort unreachable @@ -1887,7 +1908,7 @@ if i32.const 0 i32.const 160 - i32.const 190 + i32.const 198 i32.const 3 call $~lib/builtins/abort unreachable @@ -2011,7 +2032,7 @@ if i32.const 0 i32.const 160 - i32.const 228 + i32.const 236 i32.const 3 call $~lib/builtins/abort unreachable @@ -2028,7 +2049,7 @@ if i32.const 0 i32.const 160 - i32.const 229 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable @@ -2045,7 +2066,7 @@ if i32.const 0 i32.const 160 - i32.const 230 + i32.const 238 i32.const 3 call $~lib/builtins/abort unreachable @@ -2062,7 +2083,7 @@ if i32.const 0 i32.const 160 - i32.const 231 + i32.const 239 i32.const 3 call $~lib/builtins/abort unreachable @@ -2079,7 +2100,7 @@ if i32.const 0 i32.const 160 - i32.const 232 + i32.const 240 i32.const 3 call $~lib/builtins/abort unreachable @@ -2096,7 +2117,7 @@ if i32.const 0 i32.const 160 - i32.const 233 + i32.const 241 i32.const 3 call $~lib/builtins/abort unreachable @@ -2113,7 +2134,7 @@ if i32.const 0 i32.const 160 - i32.const 234 + i32.const 242 i32.const 3 call $~lib/builtins/abort unreachable @@ -2130,7 +2151,7 @@ if i32.const 0 i32.const 160 - i32.const 235 + i32.const 243 i32.const 3 call $~lib/builtins/abort unreachable @@ -2147,7 +2168,7 @@ if i32.const 0 i32.const 160 - i32.const 236 + i32.const 244 i32.const 3 call $~lib/builtins/abort unreachable @@ -2164,7 +2185,7 @@ if i32.const 0 i32.const 160 - i32.const 237 + i32.const 245 i32.const 3 call $~lib/builtins/abort unreachable @@ -2209,7 +2230,7 @@ if i32.const 0 i32.const 160 - i32.const 243 + i32.const 251 i32.const 5 call $~lib/builtins/abort unreachable @@ -2228,7 +2249,7 @@ if i32.const 0 i32.const 160 - i32.const 249 + i32.const 257 i32.const 5 call $~lib/builtins/abort unreachable @@ -2244,7 +2265,7 @@ if i32.const 0 i32.const 160 - i32.const 255 + i32.const 263 i32.const 3 call $~lib/builtins/abort unreachable @@ -2271,7 +2292,7 @@ if i32.const 0 i32.const 160 - i32.const 260 + i32.const 268 i32.const 3 call $~lib/builtins/abort unreachable @@ -2289,7 +2310,7 @@ if i32.const 0 i32.const 160 - i32.const 262 + i32.const 270 i32.const 3 call $~lib/builtins/abort unreachable @@ -2308,7 +2329,7 @@ if i32.const 0 i32.const 160 - i32.const 264 + i32.const 272 i32.const 3 call $~lib/builtins/abort unreachable @@ -2325,7 +2346,7 @@ if i32.const 0 i32.const 160 - i32.const 265 + i32.const 273 i32.const 3 call $~lib/builtins/abort unreachable @@ -2342,7 +2363,7 @@ if i32.const 0 i32.const 160 - i32.const 266 + i32.const 274 i32.const 3 call $~lib/builtins/abort unreachable @@ -2403,7 +2424,7 @@ if i32.const 0 i32.const 160 - i32.const 307 + i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable @@ -2417,7 +2438,7 @@ if i32.const 0 i32.const 160 - i32.const 312 + i32.const 320 i32.const 3 call $~lib/builtins/abort unreachable @@ -2431,7 +2452,7 @@ if i32.const 0 i32.const 160 - i32.const 313 + i32.const 321 i32.const 3 call $~lib/builtins/abort unreachable @@ -2446,7 +2467,7 @@ if i32.const 0 i32.const 160 - i32.const 314 + i32.const 322 i32.const 3 call $~lib/builtins/abort unreachable @@ -2463,7 +2484,7 @@ if i32.const 0 i32.const 160 - i32.const 315 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable @@ -2480,7 +2501,7 @@ if i32.const 0 i32.const 160 - i32.const 320 + i32.const 328 i32.const 3 call $~lib/builtins/abort unreachable @@ -2604,7 +2625,7 @@ if i32.const 0 i32.const 160 - i32.const 358 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable @@ -2621,7 +2642,7 @@ if i32.const 0 i32.const 160 - i32.const 359 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable @@ -2638,7 +2659,7 @@ if i32.const 0 i32.const 160 - i32.const 360 + i32.const 368 i32.const 3 call $~lib/builtins/abort unreachable @@ -2655,7 +2676,7 @@ if i32.const 0 i32.const 160 - i32.const 361 + i32.const 369 i32.const 3 call $~lib/builtins/abort unreachable @@ -2672,7 +2693,7 @@ if i32.const 0 i32.const 160 - i32.const 362 + i32.const 370 i32.const 3 call $~lib/builtins/abort unreachable @@ -2689,7 +2710,7 @@ if i32.const 0 i32.const 160 - i32.const 363 + i32.const 371 i32.const 3 call $~lib/builtins/abort unreachable @@ -2706,7 +2727,7 @@ if i32.const 0 i32.const 160 - i32.const 364 + i32.const 372 i32.const 3 call $~lib/builtins/abort unreachable @@ -2723,7 +2744,7 @@ if i32.const 0 i32.const 160 - i32.const 365 + i32.const 373 i32.const 3 call $~lib/builtins/abort unreachable @@ -2740,7 +2761,7 @@ if i32.const 0 i32.const 160 - i32.const 366 + i32.const 374 i32.const 3 call $~lib/builtins/abort unreachable @@ -2757,7 +2778,7 @@ if i32.const 0 i32.const 160 - i32.const 367 + i32.const 375 i32.const 3 call $~lib/builtins/abort unreachable @@ -2872,7 +2893,7 @@ if i32.const 0 i32.const 160 - i32.const 384 + i32.const 392 i32.const 5 call $~lib/builtins/abort unreachable @@ -2888,7 +2909,7 @@ if i32.const 0 i32.const 160 - i32.const 389 + i32.const 397 i32.const 5 call $~lib/builtins/abort unreachable @@ -2907,7 +2928,7 @@ if i32.const 0 i32.const 160 - i32.const 396 + i32.const 404 i32.const 3 call $~lib/builtins/abort unreachable @@ -2956,7 +2977,7 @@ if i32.const 0 i32.const 160 - i32.const 412 + i32.const 420 i32.const 3 call $~lib/builtins/abort unreachable @@ -2974,7 +2995,7 @@ if i32.const 0 i32.const 160 - i32.const 414 + i32.const 422 i32.const 3 call $~lib/builtins/abort unreachable @@ -2993,7 +3014,7 @@ if i32.const 0 i32.const 160 - i32.const 416 + i32.const 424 i32.const 3 call $~lib/builtins/abort unreachable @@ -3010,7 +3031,7 @@ if i32.const 0 i32.const 160 - i32.const 417 + i32.const 425 i32.const 3 call $~lib/builtins/abort unreachable @@ -3027,7 +3048,7 @@ if i32.const 0 i32.const 160 - i32.const 418 + i32.const 426 i32.const 3 call $~lib/builtins/abort unreachable @@ -3088,7 +3109,7 @@ if i32.const 0 i32.const 160 - i32.const 459 + i32.const 467 i32.const 3 call $~lib/builtins/abort unreachable @@ -3101,7 +3122,7 @@ if i32.const 0 i32.const 160 - i32.const 464 + i32.const 472 i32.const 3 call $~lib/builtins/abort unreachable @@ -3114,7 +3135,7 @@ if i32.const 0 i32.const 160 - i32.const 465 + i32.const 473 i32.const 3 call $~lib/builtins/abort unreachable @@ -3131,7 +3152,7 @@ if i32.const 0 i32.const 160 - i32.const 466 + i32.const 474 i32.const 3 call $~lib/builtins/abort unreachable @@ -3148,7 +3169,7 @@ if i32.const 0 i32.const 160 - i32.const 471 + i32.const 479 i32.const 3 call $~lib/builtins/abort unreachable @@ -3228,7 +3249,7 @@ if i32.const 0 i32.const 160 - i32.const 485 + i32.const 493 i32.const 3 call $~lib/builtins/abort unreachable @@ -3245,7 +3266,7 @@ if i32.const 0 i32.const 160 - i32.const 486 + i32.const 494 i32.const 3 call $~lib/builtins/abort unreachable @@ -3262,7 +3283,7 @@ if i32.const 0 i32.const 160 - i32.const 487 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable @@ -3279,7 +3300,7 @@ if i32.const 0 i32.const 160 - i32.const 488 + i32.const 496 i32.const 3 call $~lib/builtins/abort unreachable @@ -3296,7 +3317,7 @@ if i32.const 0 i32.const 160 - i32.const 489 + i32.const 497 i32.const 3 call $~lib/builtins/abort unreachable @@ -3313,7 +3334,7 @@ if i32.const 0 i32.const 160 - i32.const 490 + i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable @@ -3330,7 +3351,7 @@ if i32.const 0 i32.const 160 - i32.const 491 + i32.const 499 i32.const 3 call $~lib/builtins/abort unreachable @@ -3347,7 +3368,7 @@ if i32.const 0 i32.const 160 - i32.const 492 + i32.const 500 i32.const 3 call $~lib/builtins/abort unreachable @@ -3364,7 +3385,7 @@ if i32.const 0 i32.const 160 - i32.const 493 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable @@ -3381,7 +3402,7 @@ if i32.const 0 i32.const 160 - i32.const 494 + i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable @@ -3480,7 +3501,7 @@ if i32.const 0 i32.const 160 - i32.const 515 + i32.const 523 i32.const 5 call $~lib/builtins/abort unreachable @@ -3496,7 +3517,7 @@ if i32.const 0 i32.const 160 - i32.const 520 + i32.const 528 i32.const 5 call $~lib/builtins/abort unreachable @@ -3549,7 +3570,7 @@ if i32.const 0 i32.const 160 - i32.const 541 + i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable @@ -3567,7 +3588,7 @@ if i32.const 0 i32.const 160 - i32.const 543 + i32.const 551 i32.const 3 call $~lib/builtins/abort unreachable @@ -3586,7 +3607,7 @@ if i32.const 0 i32.const 160 - i32.const 545 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable @@ -3603,7 +3624,7 @@ if i32.const 0 i32.const 160 - i32.const 546 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable @@ -3620,7 +3641,7 @@ if i32.const 0 i32.const 160 - i32.const 547 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable @@ -3636,7 +3657,7 @@ if i32.const 0 i32.const 160 - i32.const 548 + i32.const 556 i32.const 3 call $~lib/builtins/abort unreachable @@ -3649,7 +3670,7 @@ if i32.const 0 i32.const 160 - i32.const 553 + i32.const 561 i32.const 3 call $~lib/builtins/abort unreachable @@ -3662,7 +3683,7 @@ if i32.const 0 i32.const 160 - i32.const 554 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -3679,7 +3700,7 @@ if i32.const 0 i32.const 160 - i32.const 555 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3696,7 +3717,7 @@ if i32.const 0 i32.const 160 - i32.const 560 + i32.const 568 i32.const 3 call $~lib/builtins/abort unreachable @@ -3769,7 +3790,7 @@ if i32.const 0 i32.const 160 - i32.const 574 + i32.const 582 i32.const 5 call $~lib/builtins/abort unreachable @@ -3785,7 +3806,7 @@ if i32.const 0 i32.const 160 - i32.const 579 + i32.const 587 i32.const 5 call $~lib/builtins/abort unreachable @@ -3830,7 +3851,7 @@ if i32.const 0 i32.const 160 - i32.const 595 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable @@ -3848,7 +3869,7 @@ if i32.const 0 i32.const 160 - i32.const 597 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable @@ -3867,7 +3888,7 @@ if i32.const 0 i32.const 160 - i32.const 599 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable @@ -3884,7 +3905,7 @@ if i32.const 0 i32.const 160 - i32.const 600 + i32.const 608 i32.const 3 call $~lib/builtins/abort unreachable @@ -3901,7 +3922,7 @@ if i32.const 0 i32.const 160 - i32.const 601 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable @@ -3922,7 +3943,7 @@ if i32.const 0 i32.const 160 - i32.const 603 + i32.const 611 i32.const 3 call $~lib/builtins/abort unreachable @@ -3939,7 +3960,7 @@ if i32.const 0 i32.const 160 - i32.const 604 + i32.const 612 i32.const 3 call $~lib/builtins/abort unreachable @@ -3955,7 +3976,7 @@ if i32.const 0 i32.const 160 - i32.const 605 + i32.const 613 i32.const 3 call $~lib/builtins/abort unreachable @@ -3968,7 +3989,7 @@ if i32.const 0 i32.const 160 - i32.const 606 + i32.const 614 i32.const 3 call $~lib/builtins/abort unreachable @@ -3981,7 +4002,7 @@ if i32.const 0 i32.const 160 - i32.const 607 + i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable @@ -3998,7 +4019,7 @@ if i32.const 0 i32.const 160 - i32.const 608 + i32.const 616 i32.const 3 call $~lib/builtins/abort unreachable @@ -4015,7 +4036,7 @@ if i32.const 0 i32.const 160 - i32.const 613 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -4046,7 +4067,7 @@ if i32.const 0 i32.const 160 - i32.const 622 + i32.const 630 i32.const 3 call $~lib/builtins/abort unreachable @@ -4063,7 +4084,7 @@ if i32.const 0 i32.const 160 - i32.const 623 + i32.const 631 i32.const 3 call $~lib/builtins/abort unreachable @@ -4080,7 +4101,7 @@ if i32.const 0 i32.const 160 - i32.const 624 + i32.const 632 i32.const 3 call $~lib/builtins/abort unreachable @@ -4097,7 +4118,7 @@ if i32.const 0 i32.const 160 - i32.const 625 + i32.const 633 i32.const 3 call $~lib/builtins/abort unreachable @@ -4114,7 +4135,7 @@ if i32.const 0 i32.const 160 - i32.const 626 + i32.const 634 i32.const 3 call $~lib/builtins/abort unreachable @@ -4131,7 +4152,7 @@ if i32.const 0 i32.const 160 - i32.const 627 + i32.const 635 i32.const 3 call $~lib/builtins/abort unreachable @@ -4148,7 +4169,7 @@ if i32.const 0 i32.const 160 - i32.const 628 + i32.const 636 i32.const 3 call $~lib/builtins/abort unreachable @@ -4165,7 +4186,7 @@ if i32.const 0 i32.const 160 - i32.const 629 + i32.const 637 i32.const 3 call $~lib/builtins/abort unreachable @@ -4181,7 +4202,7 @@ if i32.const 0 i32.const 160 - i32.const 630 + i32.const 638 i32.const 3 call $~lib/builtins/abort unreachable @@ -4239,7 +4260,7 @@ if i32.const 0 i32.const 160 - i32.const 649 + i32.const 657 i32.const 3 call $~lib/builtins/abort unreachable @@ -4257,7 +4278,7 @@ if i32.const 0 i32.const 160 - i32.const 651 + i32.const 659 i32.const 3 call $~lib/builtins/abort unreachable @@ -4276,7 +4297,7 @@ if i32.const 0 i32.const 160 - i32.const 653 + i32.const 661 i32.const 3 call $~lib/builtins/abort unreachable @@ -4293,7 +4314,7 @@ if i32.const 0 i32.const 160 - i32.const 654 + i32.const 662 i32.const 3 call $~lib/builtins/abort unreachable @@ -4310,7 +4331,7 @@ if i32.const 0 i32.const 160 - i32.const 655 + i32.const 663 i32.const 3 call $~lib/builtins/abort unreachable @@ -4331,7 +4352,7 @@ if i32.const 0 i32.const 160 - i32.const 657 + i32.const 665 i32.const 3 call $~lib/builtins/abort unreachable @@ -4348,7 +4369,7 @@ if i32.const 0 i32.const 160 - i32.const 658 + i32.const 666 i32.const 3 call $~lib/builtins/abort unreachable @@ -4364,7 +4385,7 @@ if i32.const 0 i32.const 160 - i32.const 659 + i32.const 667 i32.const 3 call $~lib/builtins/abort unreachable @@ -4377,7 +4398,7 @@ if i32.const 0 i32.const 160 - i32.const 660 + i32.const 668 i32.const 3 call $~lib/builtins/abort unreachable @@ -4390,7 +4411,7 @@ if i32.const 0 i32.const 160 - i32.const 661 + i32.const 669 i32.const 3 call $~lib/builtins/abort unreachable @@ -4407,7 +4428,7 @@ if i32.const 0 i32.const 160 - i32.const 662 + i32.const 670 i32.const 3 call $~lib/builtins/abort unreachable @@ -4424,7 +4445,7 @@ if i32.const 0 i32.const 160 - i32.const 667 + i32.const 675 i32.const 3 call $~lib/builtins/abort unreachable @@ -4455,7 +4476,7 @@ if i32.const 0 i32.const 160 - i32.const 676 + i32.const 684 i32.const 3 call $~lib/builtins/abort unreachable @@ -4472,7 +4493,7 @@ if i32.const 0 i32.const 160 - i32.const 677 + i32.const 685 i32.const 3 call $~lib/builtins/abort unreachable @@ -4489,7 +4510,7 @@ if i32.const 0 i32.const 160 - i32.const 678 + i32.const 686 i32.const 3 call $~lib/builtins/abort unreachable @@ -4506,7 +4527,7 @@ if i32.const 0 i32.const 160 - i32.const 679 + i32.const 687 i32.const 3 call $~lib/builtins/abort unreachable @@ -4523,7 +4544,7 @@ if i32.const 0 i32.const 160 - i32.const 680 + i32.const 688 i32.const 3 call $~lib/builtins/abort unreachable @@ -4540,7 +4561,7 @@ if i32.const 0 i32.const 160 - i32.const 681 + i32.const 689 i32.const 3 call $~lib/builtins/abort unreachable @@ -4557,7 +4578,7 @@ if i32.const 0 i32.const 160 - i32.const 682 + i32.const 690 i32.const 3 call $~lib/builtins/abort unreachable @@ -4574,7 +4595,7 @@ if i32.const 0 i32.const 160 - i32.const 683 + i32.const 691 i32.const 3 call $~lib/builtins/abort unreachable @@ -4590,7 +4611,7 @@ if i32.const 0 i32.const 160 - i32.const 684 + i32.const 692 i32.const 3 call $~lib/builtins/abort unreachable pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy